假设我有一个这样的 Java 类:
public class PersonGrabber {
private PersonDAO dao;
public void setDao(PersonDao dao) {
this.dao = dao;
}
public PersonDAO getDao() {
return this.dao;
}
//...
}
我有一个相应的 Spring bean,如下所示:
<bean id="personGrabber" class="com.stackoverflow.example.PersonGrabber">
<property name="dao"><null/></property>
</bean>
现在,这很糟糕,因为我确实需要在该 bean 变得有用之前将 dao
属性设置为该 bean 上的某些内容。但是,我不想等到运行时才抛出 NullPointerException
。无论如何要告诉 Spring 一个 bean 属性 必须 在使用之前被填充?理想情况下,我希望它在初始化时崩溃,这样我就不必等待它找出答案。
我希望有类似注释的东西:
public class PersonGrabber {
@SpringRequired
private PersonDAO dao;
//...
}
有一些 Spring 老手的帮助吗?
最佳答案
对于您所拥有的类类型,您总是需要将其他属性设置为非空值,执行此操作的最简单方法是两方面的事情。在 setter 上使用 @Required
注释告诉 Spring 必须始终调用该方法,并在 setter 内部检查以查看注入(inject)是否是真实实例(即不为 null ).
@Required
public void setDao(PersonDao dao) {
if (dao == null)
throw new IllegalArgumentException("property 'dao' is null");
this.dao = dao;
}
最后一小部分是您需要确保在您的 Spring 配置文件中打开注释处理:
<context:annotation-config/>
请注意,您很有可能已经知道了。
关于java - 如何向 Spring 发出必须填充 Bean 属性的信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5684603/