dav*_*lab 2 java spring annotations javabeans
假设我有一个像这样的Java类:
public class PersonGrabber {
private PersonDAO dao;
public void setDao(PersonDao dao) {
this.dao = dao;
}
public PersonDAO getDao() {
return this.dao;
}
//...
}
Run Code Online (Sandbox Code Playgroud)
我有一个相应的Spring bean,如下所示:
<bean id="personGrabber" class="com.stackoverflow.example.PersonGrabber">
<property name="dao"><null/></property>
</bean>
Run Code Online (Sandbox Code Playgroud)
现在,这很糟糕,因为我真的需要dao在该bean变得有用之前将该属性设置为该bean.但是,我不想等到运行时等待它抛出一个NullPointerException.反正有没有告诉Spring 在使用之前必须填充bean属性?理想情况下,我希望它在初始化时崩溃,以便我不必等待它找出来.
我希望有类似注释的东西:
public class PersonGrabber {
@SpringRequired
private PersonDAO dao;
//...
}
Run Code Online (Sandbox Code Playgroud)
一些春季退伍军人的帮助吗?
对于你所拥有的类的类型,你总是需要将其他属性设置为非null值,最简单的实现方法是双重的.使用@Requiredsetter上的注释告诉Spring必须始终调用该方法,并在setter中检查注入是否是真实实例(即,不是null).
@Required
public void setDao(PersonDao dao) {
if (dao == null)
throw new IllegalArgumentException("property 'dao' is null");
this.dao = dao;
}
Run Code Online (Sandbox Code Playgroud)
最后一小部分是你需要确保在Spring配置文件中打开注释处理:
<context:annotation-config/>
Run Code Online (Sandbox Code Playgroud)
请注意,你很可能已经有了这个.
| 归档时间: |
|
| 查看次数: |
3464 次 |
| 最近记录: |