Ahm*_*DAL 6 java jsf spring dependency-injection
假设我有Spring服务类或JSF bean.我将这些类连接到另一个类中.到目前为止没有问题.我可以在任何方法中使用这些注入的字段.
但是,在构造函数中使用它们会给我一个NullPointerException.
可能构造函数在依赖注入发生之前运行,并且它看不到我注入的字段.有没有在构造函数中使用依赖注入的解决方案?
不,您不能在构造函数中引用注入的字段。框架必须以某种方式构造您的对象(调用构造函数),然后注入依赖项,以便它们在构造函数执行期间为空。您通常所做的是将@PostConstruct
注释应用于您的方法之一并在那里执行初始化:
class MyBean {
@Inject
private MyDependency myDep;
@PostConstruct
public void init() {
assert myDep != null;
}
}
Run Code Online (Sandbox Code Playgroud)
如果是 spring xml 配置,您可以在定义中使用init-method="init"
而不是使用。或者,您可以在 xml 中使用构造函数注入:@PostConstruct
<bean>
<bean id="myBean" class="my.package.MyBean">
<constructor-arg ref="myDependency/>
</bean>
Run Code Online (Sandbox Code Playgroud)
或等效注释。
显然,如果对象不存在,则不可能向该对象注入任何内容。为了存在,必须构造一个对象。
Spring支持构造函数注入:
@Autowired
public SomeService(SomeDependency dep) {
...
Run Code Online (Sandbox Code Playgroud)
Spring 还支持@PostConstruct,它允许在注入所有依赖项后初始化 bean。
不知道JSF怎么样。
归档时间: |
|
查看次数: |
3120 次 |
最近记录: |