我一直在为此努力。不知道我在想什么。我无法使@Value
注释在纯Java配置的Spring应用程序(非Web)中工作
@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
Name: ${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
注释生效,PropertySourcesPlaceholderConfigurer
应该注册。它使用时自动完成<context:property- placeholder>
的XML,但应注册为一个static @Bean
使用时@Configuration
。
请参阅@PropertySource文档和此Spring
Framework Jira问题。
问题内容: 我正在尝试使用Java批注,但似乎无法使我的代码认识到其中存在。我究竟做错了什么? 问题答案: 您需要使用注释界面上的@Retention注释将注释指定为运行时注释。 即
我有一个简单的类叫BeaconDao 然而,当我用@service或@component标记beaconDao时,一切都运行得非常好。有人能看出问题所在吗?
这件事让我头疼。不知道我错过了什么。我无法在纯java配置的spring应用程序(非web)中使用注释 属性文件只包含bean如下所示: 环境变量正确打印值,不正确 主类只是初始化上下文。 但是如果我使用 有了这个片段 当然,现在环境返回。
问题内容: 我知道有一些关于此的帖子,但是它们大约一年了,没有任何回应。实际上,我们在PostgreSQL 8.4上使用的是Hibernate 4.2.1.Final。我们有两个这样的实体 实体A(顶级层次结构类) 实体B(子类) 如您所见,使用注释了一个实体,但是当使用来获取顶级类时 我们也通过属性获得了B子类。实际上,SQL语句包含。这仍然是Hibernate第四版中的错误,还是我做错了什么?
问题内容: 我从Spring Framework开始,想做一个带有注释的HelloWorld,我已经创建了一个控制器和一个视图,我猜它是基本的hello工作。但是,我想使用注释,因为我不能再使用SimpleFormController(已弃用)。 我收到的错误是Estado HTTP 404-/av/index.jsp 我正在使用Netbeans,并将示例基于它提供的基本模板。我有以下文件,我可以