我想访问应用程序中提供的值。属性,例如:

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
logging.file=${HOME}/application.log

userBucket.path=${HOME}/bucket

我想访问userBucket。在Spring Boot应用程序的主程序中的路径。


当前回答

您可以使用@Value注释并访问您所使用的Spring bean中的属性

@Value("${userBucket.path}")
private String userBucketPath;

Spring Boot文档的Externalized Configuration部分解释了您可能需要的所有细节。

其他回答

获取财产价值的最佳方法是使用。

1. 使用Value注释

@Value("${property.key}")
private String propertyKeyVariable;

2. 使用环境bean

@Autowired
private Environment env;

public String getValue() {
    return env.getProperty("property.key");
}

public void display(){
  System.out.println("# Value : "+getValue);
}

您可以使用@Value注释并访问您所使用的Spring bean中的属性

@Value("${userBucket.path}")
private String userBucketPath;

Spring Boot文档的Externalized Configuration部分解释了您可能需要的所有细节。

最好的方法是使用@Value注释,它会自动为你的对象私有环境赋值。 这将减少你的代码,它将很容易过滤你的文件。

目前, 我知道以下三种方法:

1. @Value注释

    @Value("${<property.name>}")
    private static final <datatype> PROPERTY_NAME;

根据我的经验,有些情况下你并不是 能够获取该值或将其设置为null。 例如, 当你尝试在preConstruct()方法或init()方法中设置它时。 这是因为值注入发生在类完全构造之后。 这就是为什么最好使用3'选项的原因。

2. @PropertySource注释

@PropertySource("classpath:application.properties")

//env is an Environment variable
env.getProperty(configKey);

当装入类时,PropertySouce从环境变量中的属性源文件(在您的类中)设置值。 所以你可以很容易地获取后记。 可通过系统环境变量访问。

3.@ConfigurationProperties注释。

这主要用于Spring项目中加载配置属性。 它根据属性数据初始化实体。 @ConfigurationProperties标识要加载的属性文件。 @Configuration基于配置文件变量创建bean。 @ConfigurationProperties(prefix = "user") @ configuration(“用户数据”) 类用户{ //属性及其getter / setter } @ autowired private UserData; userData.getPropertyName ();

您可以使用@Value注释并访问spring bean中的属性

@Value("${userBucket.path}")
private String userBucketPath;