Spring框架学习
1、什么是控制反转?控制反转能做什么 或者说为什么要用控制反转?
答:
控制反转是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。
我们在获取对象的时候,都是采用new来创建,是主动的,两个类之间的耦合性很高。
如果要更改代码非常麻烦,解耦采用ioc,采用容器的话来创建这个对象,容器帮我们
查找以及注入依赖的对象。是被动的。
就是我不给你打电话,也会有人给我打电话。
2、依赖注入 DI
能注入的数据: 有三类
基本类型和String
其他bean类型(在配置文件中活着注解配置过的bean)
复杂类型/集合类型
注入的方式:有三种
第一种:使用构造函数提供
第二种:使用set方法提供
第三种:使用注解提供
使用构造函数提供
对应的构造函数
public AccountServiceImpl(String name,Data birthday)
{
this.name = name;
this.birthday = birthday;
}
构造函数注入:
使用的标签:constructor-arg
标签出现的位置:bean标签的内部
标签中的属性:
type:用于指定要注入的数据的数据类型,该数据类型也是构造函数中某个或某些参数的类型
index:用于指定要注入的数据给构造函数中指定索引位置的参数赋值。索引的位置是从0开始
name:用于指定给构造函数中指定名称的参数赋值
以上三个用于指定给构造函数中哪个参数赋值
value:用于提供基本类型和String类型的数据
ref:用于指定其他的bean类型数据 它指的就是在spring的ioc核心容器中出现过的bean对象
1、这种方式使用的是默认构造函数
<bean id="accountService" class="com.service.impl.AccountServiceImpl">
2、
<bean id="accountService" class="com.service.impl.AccountServiceImpl">
<constructor-arg name="name" value="Akmf" ></constructor-arg>
<constructor-arg name="birthday" ref="now" ></constructor-arg>
</bean>
<bean id="now" class="java.util.Date"> </bean>
特点优势:
在获取bean对象时,注入数据是必须的操作,否则对象无法创建成功
弊端:
改变了bean对象的实例化方式,使我们在创建对象时,如果用不到这些数据,也必须提供。
保持好奇心!

浙公网安备 33010602011771号