Spring中的依赖检查

什么是依赖检查?

依赖检查主要用于自动装配中判断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 />

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值