spring中的IOC
IOC:Inversion of Control 控制反转
spring核心容器也可以称为IOC容器,该容器主要负责管理各种对象的生命周期
DI:Dependency Injection 依赖注入 (设置set)
DI的概念的提出是用来解释IOC的,表示让调用类对某一接口实现类的依赖关系由容器注入
IOC容器核心api(容器将来会是一个对象):
BeanFactory接口
ApplicationContext接口:该接口继承于BeanFactory,增强了BeanFactory
配置文件:
Spring通过读取配置文件中的数据来对项目各个对象进行实例化,配置以及组装,通常使用XML文件来作为配置文件
对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象的过程,spring的依赖注入有3种方式:
1.set方式注入(必须依靠类中的set方法)
<!--property 对于所有用set方式来注入的必须使用该标签-->
<!--value 是对于基本类型,都用value(标签/属性)来注入,可以实现自动的数据类型转换-->
2.基于构造器注入
在Bean中不用写set方法,但是要有与之相对应参数的构造器(一参,二参.....)
3,自动注入 :容器依照一些规则去装配bean中的一个属性
注意:自动装配只对[对象类型]起作用,对基本类型不起作用.
只需要配置一个autowire属性即可完成自动装配,不用再配置文件中写<property>,但是在类中还是要生成依赖对象的setter方法。
第一种情况:
在beans标签中配置装载方式:default-autowire="byName"
在根元素beans中加入这个属性,那么下面所有的bean都会
使用byName的方式进行自动注入,如果在下面的某一个bean
里面想使用其他的方式进行注入,可以用autowire=""属性进行
说明,或者某一个bean不想使用任何自动注入就使用autowire="no"
第二种情况:
1,在bean标签中指定配置方式,autowire="byName":
spring容器会到当前的类中找property的名字(setXxx中去掉set后的名字),然后Spring会在容器中自动寻找与属性名字相同的bean的id
2,autowire="byType":
spring容器会根据当前类中的set方法里面参数的类型,去容器中找相匹配的对象,
3,autowire="constructor"
根据构造器的参数类型去匹配
只要在xml配置文件在写入一个bean标签,就会管理一个对象,标签里面的property是注入依赖的。
IOC:Inversion of Control 控制反转
spring核心容器也可以称为IOC容器,该容器主要负责管理各种对象的生命周期
DI:Dependency Injection 依赖注入 (设置set)
DI的概念的提出是用来解释IOC的,表示让调用类对某一接口实现类的依赖关系由容器注入
IOC容器核心api(容器将来会是一个对象):
BeanFactory接口
ApplicationContext接口:该接口继承于BeanFactory,增强了BeanFactory
配置文件:
Spring通过读取配置文件中的数据来对项目各个对象进行实例化,配置以及组装,通常使用XML文件来作为配置文件
对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象的过程,spring的依赖注入有3种方式:
1.set方式注入(必须依靠类中的set方法)
<!--property 对于所有用set方式来注入的必须使用该标签-->
<!--value 是对于基本类型,都用value(标签/属性)来注入,可以实现自动的数据类型转换-->
2.基于构造器注入
在Bean中不用写set方法,但是要有与之相对应参数的构造器(一参,二参.....)
3,自动注入 :容器依照一些规则去装配bean中的一个属性
注意:自动装配只对[对象类型]起作用,对基本类型不起作用.
只需要配置一个autowire属性即可完成自动装配,不用再配置文件中写<property>,但是在类中还是要生成依赖对象的setter方法。
第一种情况:
在beans标签中配置装载方式:default-autowire="byName"
在根元素beans中加入这个属性,那么下面所有的bean都会
使用byName的方式进行自动注入,如果在下面的某一个bean
里面想使用其他的方式进行注入,可以用autowire=""属性进行
说明,或者某一个bean不想使用任何自动注入就使用autowire="no"
第二种情况:
1,在bean标签中指定配置方式,autowire="byName":
spring容器会到当前的类中找property的名字(setXxx中去掉set后的名字),然后Spring会在容器中自动寻找与属性名字相同的bean的id
2,autowire="byType":
spring容器会根据当前类中的set方法里面参数的类型,去容器中找相匹配的对象,
3,autowire="constructor"
根据构造器的参数类型去匹配
只要在xml配置文件在写入一个bean标签,就会管理一个对象,标签里面的property是注入依赖的。