Spring支持4种依赖检查:默认的是none
-
- none – No dependency checking.
- simple – If any properties of primitive type (int, long,double…) and collection types (map, list..) have not been set, UnsatisfiedDependencyException will be thrown.
- objects – If any properties of object type have not been set, UnsatisfiedDependencyException will be thrown.
all – If any properties of any type have not been set, an UnsatisfiedDependencyException will be thrown.
举个例子:
1
2
3
4
5
6
7
8
|
public class Customer
{
private Person person;
private int type;
private String action;
//getter and setter methods
}
|
1
2
3
4
5
6
7
8
|
public class Person
{
private String name;
private String address;
private int age;
//getter and setter methods
}
|
1. none dependency checking
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
<
bean
id="CustomerBean" class="com.mkyong.common.Customer" >
<
property
name="action" value="buy" />
</
bean
>
<
bean
id="PersonBean" class="com.mkyong.common.Person">
<
property
name="name" value="mkyong" />
<
property
name="address" value="address ABC" />
<
property
name="age" value="29" />
</
bean
>
</
beans
>
|
2. simple dependency checking
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
<
bean
id="CustomerBean" class="com.mkyong.common.Customer"
dependency-check="simple">
<
property
name="person" ref="PersonBean" />
<
property
name="action" value="buy" />
</
bean
>
<
bean
id="PersonBean" class="com.mkyong.common.Person">
<
property
name="name" value="mkyong" />
<
property
name="address" value="address ABC" />
<
property
name="age" value="29" />
</
bean
>
</
beans
>
|
注意此处type字段故意没有设置,这样会出现UnsatisfiedDependencyException
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'CustomerBean' defined in class path resource [config/Spring-Customer.xml]: Unsatisfied dependency expressed through bean property 'type': Set this property value or disable dependency checking for this bean.
3. objects dependency checking
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
<
bean
id="CustomerBean" class="com.mkyong.common.Customer"
dependency-check="objects">
<
property
name="action" value="buy" />
<
property
name="type" value="1" />
</
bean
>
<
bean
id="PersonBean" class="com.mkyong.common.Person">
<
property
name="name" value="mkyong" />
<
property
name="address" value="address ABC" />
<
property
name="age" value="29" />
</
bean
>
</
beans
>
|
此处故意没有设置”person“属性,会出现UnsatisfiedDependencyException
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'CustomerBean' defined in class path resource [config/Spring-Customer.xml]: Unsatisfied dependency expressed through bean property 'person': Set this property value or disable dependency checking for this bean.
4. all dependency checking
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
<
bean
id="CustomerBean" class="com.mkyong.common.Customer"
dependency-check="all">
<
property
name="action" value="buy" />
</
bean
>
<
bean
id="PersonBean" class="com.mkyong.common.Person">
<
property
name="name" value="mkyong" />
<
property
name="address" value="address ABC" />
<
property
name="age" value="29" />
</
bean
>
</
beans
>
|
Global default dependency checking:
default-dependency-check="all"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
default-dependency-check="all">
<
bean
id="CustomerBean" class="com.mkyong.common.Customer">
<
property
name="action" value="buy" />
<
property
name="type" value="1" />
</
bean
>
<
bean
id="PersonBean" class="com.mkyong.common.Person">
<
property
name="name" value="mkyong" />
<
property
name="address" value="address ABC" />
<
property
name="age" value="29" />
</
bean
>
</
beans
>
|