我想使用@PostConstruct
在我的webapp中初始化bean,但我无法让它工作。
我在一个新项目中重新创建了这个问题但它仍然无效。
我错过了一些明显的东西吗?据我所知,我的init()
方法符合@PostConstruct
API参考中列出的所有要求。
MyBean.java
:
@ManagedBean
@RequestScoped
public class MyBean {
@ManagedProperty(value="15")
private int number = 10;
@PostConstruct
public void init(){
number = 20;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
number.xhtml
:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Simple JSF Facelets page</title>
</h:head>
<h:body>
Number = #{myBean.number}
</h:body>
</html>
我希望Number = 20
,但我得到Number = 15
。
答案 0 :(得分:0)
@PostConstruct似乎在注入@ManagedProperty之前被调用,假设您有MyFaces 2.0,正如他们所说here。
确保使用Mojarra 2.1,因为它应该可以使用。
您可能尝试调试以了解在注入之前是否调用了init()方法,或者从未调用过。
答案 1 :(得分:-1)
默认情况下,Spring不会知道@PostConstruct和@PreDestroy注释。要启用它,您必须注册CommonAnnotationBeanPostProcessor
或在bean配置文件中指定<context:annotation-config />
。