8.2.8 使用@Required检查注入

8.2.8 使用@Required检查注入

有些时候,可能会因为疏忽忘记为某个setter方法配置依赖注入:既没有显式通过<property.>配置依赖注入;也没有使用自动装配执行依赖注入。这种疏忽通常会导致由于被依赖组件没有被注入,当程序运行时调用被依赖组件的方法时就会引发NPE异常。
为了避免上面的疏忽,可以让Spring在创建容器时就执行检查,此时需要为setter方法添加@Required修饰,这时Spring会检查该setter方法:如果开发者既没有显式通过<property>元素配置依赖注入,也没有使用自动装配执行依赖注入, Spring容器会报BeanInitializationException异常。

程序示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
E:\workspace_QingLiangJiJavaEEQiYeYingYongShiZhang5\Required
└─src\
├─beans.xml
├─lee\
│ └─SpringTest.java
└─org\
└─crazyit\
└─app\
└─service\
├─Dog.java
├─impl\
│ ├─Chinese.java
│ └─GunDog.java
└─Person.java

例如,如下Chinese类使用@Required注解修饰了setGunDog()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Chinese implements Person
{
private Dog dog;
@Required
public void setGunDog(Dog dog)
{
this.dog = dog;
}
public void test()
{
System.out.println("我是一个普通人,养了一条狗:" + dog.run());
}
}

上面程序使用@Required修饰了setGunDog()方法,这意味着程序必须为该setter方法配置依赖注入:要么通过<property>元素配置设值注入,要么通过自动装配来执行依赖注入;否则Spring启动容器时就会引发异常。