SpringMyBatis-02

1、Spring IOC

    1)IOC全称Inversion Of Control,被翻译成控制反转

    2)控制反转:指程序中对象的获取方式发生反转,由最初的NEW方式创建,转变为由第三方框架创建,注入(DI),它降低对象之间的耦合度

    3)Spring容器采用DI方式实现IOC控制,IOC是Spring框架的基础和核心

    4)DI全称是Dependency Injection,被翻译成依赖注入,依赖注入的基本原理是:将一起工作具有关联关系的对象通过方法参数传入,建立关系,因此容器的工作就是创建Bean对象时注入依赖关系

  注意:IOC是一种思想,而DI是实现IOC的主要技术途径

    5)DI主要有两种注入方式,即Setter注入和构造器注入

        -1)Setter注入

public class B{}
public class A{
private B b;
public void setB(B b){
this.b=b;
}
}

        -2)构造器注入

public class B{}
public class A{
private B b;
public A(B b){
this.b=b;
}
}

    6)自动装配

      Spring容器可以自动装配(autowire)相互协作Bean之间的关联关系,autowire可以针对单个Bean进行设置,方便之处在于减少XML注入配置

      在配置文件中,可以在<bean>标签中使用autowire属性指定自动装配的规则,一共有三种类型值:

byName:根据属性名自动装配,此选项将检查容器,根据名字查找与属性名一致的Bean,然后将其与属性自动装配(setter注入)
byType:如果容器中存在一个与指定属性类型相同的Bean,则将与此属性自动装配(setter注入)
constructor:与byType方式类似,不同之处在于它应用于构造器方式(构造器注入)

2、参数值注入

    1)注入基本值

      可以通过<value>标签或value属性来指定方法参数的值,容器将字符串从java.lang.String类型转换为实际的参数类型,然后给Bean对象注入

    2)注入Bean对象

      注入外部Bean(引用方式,方便重用)

    3)注入集合

      通过<list>、<set>、<map>、<props>标签来定义与Java中对应的List,Set,Map及Properties的参数值

      List,Set,Map及Properties都可以采用引用方式,<util:list>、<util:set>、<util:map>、<util:properties>

    4)注入Spring表达式

      Spring表达式语言,和EL表达式在语法上很相似,可以读取一个Bean对象或集合中的数据

    5)注入NULL或空字符串

      Spring将属性的空参数当做空String

<bean>
<property name="name" value=""/>
</bean>

3、基于注解依赖注入

    具有依赖关系的Bean对象,可以使用以下任意一种注解实现注入:

    1)@Autowired/@Qualifer

        可以处理构造器注入和Setter注入

        @Autowired写在构造器或set方法前,声明需要为其注入Bean

        @Qualifer写在参数前面,声明注入的Bean的id

        @Autowired/@Qualifer也可以写在属性上,作用和写在set方法上类似,但只会执行一行代码(赋值代码)

     注意:注入对象是单例时,@Qualifer可省略,此时Spring按照参数类型匹配参数值

        @Resource:只能处理Setter注入

             @Resource也可以写在属性上,作用和写在set方法上类似,但是只会执行一行代码(赋值代码)

      注意:注入对象是单例时,(name="标识符")可省略,此时Spring按照参数类型匹配参数值

原文地址:https://www.cnblogs.com/xslzwm/p/9598736.html