概念:
依赖注入[Dependency Injection]指在运行期,由外部容器动态地将依赖对象[要使用的对象]注入到组件中.
注意: 依赖注入的前提是控制反转,被注入对象和接受注入的对象都必须被Spring容器管理.
方式1: setter方式
Java类:
private 普通属性类型 属性名;
private 自定义类类型 属性名;
private 集合类型 属性名;
//提供setter和getter
配置文件:
<bean id="Bean对象匿名" class="类全名">
<property name="属性名" value="值" />
<property name="属性名" ref="Bean对象匿名" />
<property name="属性名">
<list>\<value>
<set>\<value>
<map>\<entry>
<props>\<prop>
</property>
</bean>
方式2: 构造函数
Java类:
private 普通属性类型 属性名;
private 自定义类类型 属性名;
private 集合类型 属性名;
//提供有参构造方法
配置文件:
<bean id="Bean对象匿名" class="类全名">
<constructor-arg index="参数索引" value="值" />
<constructor-arg index="参数索引" type="类全名" ref="Bean对象匿名" />
<constructor-arg index="参数索引" >
<list/set/map/props>[参考setter方式]
</constructor-arg>
</bean>
方式3: 注解方式
Java类与配置文件:
a.配置文件中context命名空间和context约束文件的地址
b.配置文件中添加<context:component-scan base-package="包名" />
c.在Java类的属性或setter上添加注解: @Autowired或@Resource.
@Autowired:
格式: @Autowired [(required=true)]
说明:
- 编写在属性或setter上,表示将Spring容器中同类型的Bean对象赋给该属性
- 根据属性类型到Spring容器中寻找bean对象,然后注入依赖对象
- required默认为true,即配置文件中必须有同类型的Bean对象,否则报错
@Resource:
格式: @Resource[(name="Bean对象匿名")]
说明:
- 编写在属性或setter上面,表示将Bean对象匿名对应的对象赋给该属性
- name属性值为Bean对象匿名,表示将Bean对象匿名对应的对象赋给该属性
- @Resource标注在setter上或不设置name属性,则name属性值默认为属性名
- 若未设置name属性,并且按照默认名称仍然找不到依赖对象时,@Resource将会按属性类型查找同类型的bean对象,然后注入到属性中.
方式4: P命名空间
Java类:
提供属性的setter和getter方法,无需其他操作.
配置文件:
第1步: 添加命名空间
xmlns:p="http://www.springframework.org/schema/p"
第2步: 注册bean,并注入数据
<bean id="bean匿名" class="类全名" p:属性名/属性名-ref="值/匿名" />

本文详细介绍了Spring框架中的依赖注入(DI)概念,包括setter方式、构造函数方式、注解方式和P命名空间四种实现方式,并通过实例展示了如何在Java类和配置文件中配置DI。DI是控制反转(IoC)的一种实践,它允许外部容器管理对象及其依赖关系,提高了代码的灵活性和可测试性。
1094

被折叠的 条评论
为什么被折叠?



