Spring学习笔记二

Posted on 2017-12-07 12:32  songsong_DBB  阅读(114)  评论(0)    收藏  举报

一、IOC和DI的概念:

  IOC:字面意思是控制反转,控制权的转移,获得依赖对象的过程被反转了,即获得对象的过程由自身管理变成了由IOC容器自动注入,应用程序本身不负责依赖对象的创建和维护,而是由外部容器(Spring)负责创建和维护。

  DI:依赖注入,是IOC的一种实现方式,目的是创建对象并且组装对象之间的关系。就是在IOC容器运行期间,动态的将某种依赖关系注入到对象当中。即当一个class A,里面有个一 Class B的对象属性,当实例化的时候,先实例化A的对象,再实例化一个B的对象,再把B的对象赋值给A。

  如图,我们的业务对象,进入Spring容器中,通过配置的源数据,来生成出符合我们需要的对象,我们在需要使用对象的时候直接拿出来用即可,应用程序本身不负责依赖对象的创建和维护。

  获取对象的过程:找IOC容器-->容器返回对象-->使用对象。

  在IOC容器中,把所有的对象都称之为Bean,Spring的Bean配置如下:首先创建一个Spring.xml文件(还有一种方式是使用注解模式,这是使用xml文件配置方式)

    

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      
 </bean>

    id表示对于这个Bean的唯一标识,class表示这个Bean对应于哪一个具体的类。

  

二、Spring的注入:

  Spring注入是指在启动Spring容器加载bean配置的时候,完成对变量的赋值行为,有两种方式:设值注入和构造注入。

    设值注入:

      

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
     <property name="testA" ref="testA"/> 
  </bean>
  
  <bean id="testA" class="com.dss.test.TestA"></bean>

即 DataSourceTransactionManager类中有一个成员对象变量 com.dss.test.TestA ,名字为testA,此时给testA提供set方法,即可在创建 transactionManager对象的时候也testA也创建对象。

  构造注入:同理,在DataSourceTransactionManager类中提供一个构造方法,为testA成员变量赋值。

  

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
     <constructor-arg name="testA" ref="testA"/>
  </bean>
  
  <bean id="testA" class="com.dss.test.TestA"></bean>

   注意的是 testA必须要和DataSourceTransactionManager中定义的成员变量名保持一致。

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3