目录
一:IOC介绍(inversion of controll)
IOC控制反转(思想就是用容器管理对象)
IOC控制:对象创建、属性赋值、生命周期
正转:开发人员在代码中,使用new构造方法创建对象,属性赋值,生命周期控制。
IOC反转:由Spring容器完成开发人员的工作。通过容器使用容器中的对象(容器完成了开发人员的工作)。
2.1 依赖注入(DI):是IOC所干的事情,程序中只需要用对象的名称就可以通过过容器完成创建赋值获取等任务。
2.2 Spring是通过DI来实现IOC的,我们只需要知道类的名称即可完成依赖和注入。
2.3 Spring底层通过反射创建对象和赋值。
将spring作为一个容器,开发的时候使用注解来获取对象。
spring的配置文件中
自动生成的beans中包含约束条件
Spring容器对象的创建是无参构造
Spring容器在创建的时候读取xml中的文件,创建java对象,而不是getbean对象的时候
Spring在创建容器对象(ApplicationContext)的时候xml中有几个bean就创建几个java对象
Spring可以创建电脑文件中有的class文件,但是没有自定义类的对象
Spring既可以创建接口对象也可以创建类对象
配置文件和注解都可以完成
Spring容器调用set方法,完成属性的赋值
基本数据类型和String的赋值value
引用类型的赋值为ref
当容器创建的时候,bean已经创建(构造方法执行),赋值的时候我们是根据(set设值)setEmail后面的Email进行字符串拼接,判断是否存在setEmail()方法,存在就可以注入或者做其他的事情。
全参构造的基础下完成
- <bean id="myStudent" class="com.rbynode.ba02.Student">
- <constructor-arg name="name" value="任彪煜">constructor-arg>
- <constructor-arg name="age" value="22">constructor-arg>
- <constructor-arg name="school" ref="myschool">constructor-arg>
- bean>
- <bean id="myschool" class="com.rbynode.ba02.School">
- <property name="name" value="中北大学">property>
- <property name="address" value="太原市">property>
- bean>
当引用类型较多时,Spring容器提供了引用类型的自动注入
1.byname(按名称注入)
2.byType(按名称类型注入)
<@Compotent>表示:
<@Compotent value = "myStudent">
@Value注解:对下面一行的简单属性进行设值
外部文件属性配置
@Value(&{myname})
属性文件中myname=张三
默认@Autowired(byType)
得先有对象
后赋值
@Autowired(byname)
bean的id
@Qualifier(value = "myschool")
一般的话required的boolean值为真
对比@Autowire默认值是byType赋值
@Resouce默认值是byName赋值