@Value 没有被注入到其他包中
@Value not getting injected in other packages
我在 Spring 中定义了一个 属性 源,我正在尝试加载 class 路径
中存在的属性文件
@Configuration
@PropertySource(name = "props", value = "classpath:prod.properties")
public class PropertyPlaceholderConfigurerConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {
PropertySourcesPlaceholderConfigurer ppc = new PropertySourcesPlaceholderConfigurer();
Resource[] resources = new ClassPathResource[]
{ new ClassPathResource("prod.properties") };
ppc.setLocations(resources);
ppc.setIgnoreUnresolvablePlaceholders(true);
return ppc;
}
@Value("${DATABASE_NAME}") private String DATABASE_NAME;
@Bean
public String test() {
System.out.println(DATABASE_NAME);
}
}
My prod.properties file has 1 entry
DATABASE_NAME=proddb_123
现在在 test() bean 中打印为 proddb_123
我面临的两个问题是
我在另一个包中有另一个 class 我正在尝试
注入它
@Value("${DATABASE_NAME}") 私有字符串 DATABASE_NAME;
但是这个值总是"${DATABASE_NAME}"
我有不同的 gradle 项目,例如 webapplication-gradle 就是一个
@PropertySouce 配置定义的地方和另一个
像 storage-gradle 这样的项目。我可以将 DATABASE_NAME 注入任何
class 存在于存储-gradle 项目中。
在其他 class 中您想注入 @Value(${DATABASE_NAME}") 的地方,您还必须使用 @PropertySource 注释。另一种选择是删除@PropertySource 注释和在 applicaiton-context.xml 中定义了一个 class org.springframework.beans.factory.condig.PropertyPlaceholderConfigurer 的 bean,并为 属性 位置列表添加了 classpath:prod.properties
我在 Spring 中定义了一个 属性 源,我正在尝试加载 class 路径
中存在的属性文件@Configuration
@PropertySource(name = "props", value = "classpath:prod.properties")
public class PropertyPlaceholderConfigurerConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {
PropertySourcesPlaceholderConfigurer ppc = new PropertySourcesPlaceholderConfigurer();
Resource[] resources = new ClassPathResource[]
{ new ClassPathResource("prod.properties") };
ppc.setLocations(resources);
ppc.setIgnoreUnresolvablePlaceholders(true);
return ppc;
}
@Value("${DATABASE_NAME}") private String DATABASE_NAME;
@Bean
public String test() {
System.out.println(DATABASE_NAME);
}
}
My prod.properties file has 1 entry
DATABASE_NAME=proddb_123
现在在 test() bean 中打印为 proddb_123
我面临的两个问题是
我在另一个包中有另一个 class 我正在尝试 注入它
@Value("${DATABASE_NAME}") 私有字符串 DATABASE_NAME;
但是这个值总是"${DATABASE_NAME}"
我有不同的 gradle 项目,例如 webapplication-gradle 就是一个 @PropertySouce 配置定义的地方和另一个 像 storage-gradle 这样的项目。我可以将 DATABASE_NAME 注入任何 class 存在于存储-gradle 项目中。
在其他 class 中您想注入 @Value(${DATABASE_NAME}") 的地方,您还必须使用 @PropertySource 注释。另一种选择是删除@PropertySource 注释和在 applicaiton-context.xml 中定义了一个 class org.springframework.beans.factory.condig.PropertyPlaceholderConfigurer 的 bean,并为 属性 位置列表添加了 classpath:prod.properties