第1章:spring注入/1.4 depends-on属性/1.4.1 概念
- 概念
- 指的是在定义某个bean的时候指定它依赖某些bean,那意味着在创建这个bean之前,它所有依赖的bean要先创建
第1章:spring注入/1.4 depends-on属性/1.4.2 依赖bean声明
- 依赖bean声明格式
-
- 格式:<bean id="bean的名称" class="含包名的类名" depends-on= "bean1,bean2,...beann">
- 说明:
- bean的名称、含包名的类名:参照 第1章:spring注入/1.1 元数据配置/1.2 XML配置方式/1.2.2 XML文件结构/1.2.2.3 Bean的定义
- depends-on= "bean1,bean2,...beann":bean1,bean2,beann指的是是bean名称,多个以逗号隔开,声明的顺序就是执行的顺序
- 举例:
- 类定义:
-
package com.wiley.beginningspring.samenametest; import org.springframework.stereotype.Repository; import com.wiley.beginningspring.ch2.I; @Repository public class A implements I{ A(){ System.out.println("A类初始化"); } public void func(){ System.out.println("A类实现"); } }
-
package com.wiley.beginningspring.samenametest; import org.springframework.beans.factory.annotation.Autowire; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Repository; import com.wiley.beginningspring.ch2.I; @Repository public class B { B(){ System.out.println("B类初始化"); } public void samename(I i) { i.func(); } }
-
package com.wiley.beginningspring.samenametest2; import org.springframework.stereotype.Repository; import com.wiley.beginningspring.ch2.I; @Repository public class C implements I{ C(){ System.out.println("C类初始化"); } public void func(){ System.out.println("C类实现"); } }
-
package com.wiley.beginningspring.samenametest2; import org.springframework.beans.factory.annotation.Autowire; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Repository; import com.wiley.beginningspring.ch2.I; import com.wiley.beginningspring.samenametest.A; @Repository public class D { D(){ System.out.println("D类初始化"); } //@Bean(autowire = Autowire.BY_NAME) public void samename(I i) { i.func(); } }
-
- bean定义:
<!-- 定义bean a,通过指定它的依赖 -->
<bean id="a" class="com.wiley.beginningspring.samenametest.A"
depends-on="c,b,d"></bean>
<bean id="b" class="com.wiley.beginningspring.samenametest.B"></bean>
<bean id="c" class="com.wiley.beginningspring.samenametest2.C"></bean>
<bean id="d" class="com.wiley.beginningspring.samenametest2.D"></bean>
- 先执行C,接着执行B,再执行D,最后执行A
- 执行结果:
C类初始化
B类初始化
D类初始化
A类初始化
- 类定义: