什么是依赖检查?
依赖检查主要用于自动装配中判断bean与装配到bean中的数据类型或对象类型是否能装配成功。
4种依赖检查模式:none、simple、objects和all,默认是none
现有java类
package cn.belle.test;
public class Student {
private String name;
private Job job;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Job getJob() {
return job;
}
public void setJob(Job job) {
this.job = job;
}
}
package cn.belle.test;
public class Job {
private String Jobname;
public String getJobname() {
return Jobname;
}
public void setJobname(String jobname) {
Jobname = jobname;
}
}
现在自动装配Student类
none:
<bean id="Student" class="cn.belle.test.Student" autowire="byName" dependency-check="none">
</bean>
none代表着不给Student类中任何属性赋值依然可以自动装配Student
simple:
<bean id="Student" class="cn.belle.test.Student" autowire="byName" dependency-check="simple">
<property name="name" value="ZW"></property>
</bean>
检查Studnet类中的简单数据类型(即name属性)
object:
<bean id="Student" class="cn.belle.test.Student" autowire="byName" dependency-check="objects">
<property name="job" ref="Jobbean"></property>
</bean>
<bean id="Jobbean" class="cn.belle.test.Job"></bean>
检查对象类型
all:
<bean id="Student" class="cn.belle.test.Student" autowire="byName" dependency-check="all">
<property name="job" ref="Jobbean"></property>
<property name="name" value="ZW"></property>
</bean>
<bean id="Jobbean" class="cn.belle.test.Job"></bean>
所有属性都检查
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
default-dependency-check="all">
也可这样设置全局的依赖检查
看到这里你可能会有这样的疑问,如果我只是要单个属性被检查应该怎么做了?
Spring中提供了 @Required注解来解决这个问题
将Student类修改
package cn.belle.test;
import org.springframework.beans.factory.annotation.Required;
public class Student {
private String name;
private Job job;
public String getName() {
return name;
}
@Required
public void setName(String name) {
this.name = name;
}
public Job getJob() {
return job;
}
public void setJob(Job job) {
this.job = job;
}
}
然后在配置文件中配置
<bean
class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
或者
<context:annotation-config />