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是注入依赖的。

原文地址:https://www.cnblogs.com/wskb/p/10939427.html