注入无弹簧的应用特性

我想要一种简单,最好是基于注释的方法,将外部属性注入java程序,而无需使用spring框架(org.springframework.beans.factory.annotation.Value;)

某类.java

@Value("${some.property.name}")
private String somePropertyName;

应用程序.yml

some:
  property:
    name: someValue

是否有推荐的方法可以在标准库中执行此操作?


答案 1

我最终使用了apache commons配置

pom.xml:

<dependency>
      <groupId>commons-configuration</groupId>
      <artifactId>commons-configuration</artifactId>
      <version>1.6</version>
    </dependency>

src/.../PropertiesLoader.java

PropertiesConfiguration config = new PropertiesConfiguration();
config.load(PROPERTIES_FILENAME);
config.getInt("someKey");

/src/main/resources/application.properties

someKey: 2

我不想把我的库变成一个Spring应用程序(我想要注释,但没有应用程序上下文+,额外的bean,额外的Spring生态系统/包袱,这在我的项目中没有意义)。@Value@Component


答案 2

在此处定义应用程序属性 /src/main/resources/application.properties

定义属性加载器类

public class PropertiesLoader {

public static Properties loadProperties() throws IOException {
    Properties configuration = new Properties();
    InputStream inputStream = PropertiesLoader.class
      .getClassLoader()
      .getResourceAsStream("application.properties");
    configuration.load(inputStream);
    inputStream.close();
    return configuration;
}

}

在所需的类中注入属性值,如下所示,

Properties conf = PropertiesLoader.loadProperties();
String property = conf.getProperty(key);