这件事让我头疼。不知道我错过了什么。我无法在纯java配置的spring应用程序(非web)中使用@Value
注释
@Configuration
@PropertySource("classpath:app.properties")
public class Config {
@Value("${my.prop}")
String name;
@Autowired
Environment env;
@Bean(name = "myBean", initMethod = "print")
public MyBean getMyBean(){
MyBean myBean = new MyBean();
myBean.setName(name);
System.out.println(env.getProperty("my.prop"));
return myBean;
}
}
属性文件只包含my。prop=avalue
bean如下所示:
public class MyBean {
String name;
public void print() {
System.out.println("Name: " + name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
环境变量正确打印值,@value
不正确avalue
名称:${my.prop}
主类只是初始化上下文。
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Config.class);
但是如果我使用
@ImportResource("classpath:property-config.xml")
有了这个片段
<context:property-placeholder location="app.properties" />
当然,现在环境返回null
。
在您的Config
类中添加以下bean声明
@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
为了使@Value
注释生效,应注册属性资源占位符配置器。使用
请参阅@PropertySource文档和本期Spring Framework Jira。
问题内容: 我一直在为此努力。不知道我在想什么。我无法使注释在纯Java配置的Spring应用程序(非Web)中工作 该属性文件仅包含bean,如下所示: 环境变量会正确打印该值,而不会正确打印。 主类只是初始化上下文。 但是,如果我使用 这个片段 然后就可以了 当然现在环境又回来了。 问题答案: 在您的类中添加以下bean声明 为了使注释生效,应该注册。它使用时自动完成的XML,但应注册为一个使
试图让spring boot@ConfigurationProperties注释工作起来,这让我感到非常困难。所以希望有人能为我澄清我做错了什么。我有一个Spring Boot应用程序,它在类路径上包含一个application.properties。它的价值在于 我有一个application.class,它有spring boot注释,位于包层次结构的顶部 有人告诉我我做错了什么吗? 更新:
我的spring应用程序有点小问题。下面是我的代码: (存储库) 下面是我的简单服务类: 更新:配置
我们一直在使用Spring@Value注释来注入属性值。我们有一个约定来命名属性名称,以匹配它们注入的java字段。这带来了不必要的工作,即每个ConfigBean的java字段都需要用@Value注释。 我正在寻找一种方法,用新的注释注释java类(比如说ConfigBean),让一些后处理器读取这些bean的属性名称,并自动注入属性值。 我正在寻找一些关于如何在没有@Value注释的情况下实现
我正在尝试在数据库中保存对象。正在执行代码并创建实体的Id,但实体未持久化到数据库(未插入行): 从三行(beginTransation,flush,commit)中删除注释解决了问题,但是为什么注释在这里不起作用呢? spring XML: POM xml文件: