spring笔记(二)spring依赖注入的方式和依赖注入的数据类型

182 阅读1分钟

spring依赖注入

Bean的依赖注入概念

依赖注入(Dependency Injection):它是Spring框架核心的IOC具体实现。在编写程序时,通过控制反转,把对象的创建交给了spring,但是代码中不可能出现没有依赖的情况。IOC解耦只是降低他们的依赖关系,但不会消除。例如:业务层任然会调用持久层的方法。那这种业务层和持久层的依赖关系,在使用spring之后,就让spring来维护了。简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。

Bean的依赖注入方式

  1. 构造方法
  • 创建有参构造方法,顺便创建无参的构造方法
  • 配置spring容器调用有参构造时进行注入
  •   <bean id="userDao" class="com.dao.impl.UserDaoImpl"/>
      <bean id="userService" class="com.service.impl.UserServiceImpl">      		   	
      <constructor-arg name="userDao" ref="userDao"></constructor-arg>
      </bean>
    
  1. set方法
  • 在对应方法中对需要注入的对象设置set方法

  • 配置spring容器调用set方法进行注入

  •   <bean id="userDao" class="com.dao.impl.UserDaoImpl"/>
      <bean id="userService" class="com.service.impl.UserServiceImpl">
      	<property name="userDao" ref="userDao"/>
      </bean>
    
  • set方法中有个P命名空间注入(知道就行)

bean的依赖注入的数据类型

除了引用对象可以注入,集合和普通的数据类型都可在spring容器中注入

  • 普通数据注入

  •   <bean id="userDao" class="com.dao.impl.UserDaoImpl">
          <property name="company" value="aaa"></property>
          <property name="age" value="15"></property>
      </bean>
    
  • list集合注入

  •   <bean id="userDao" class="com.dao.impl.UserDaoImpl">
          <property name="strList">
              <list>
                  <value>aaa</value>
                  <value>bbb</value>
                  <value>ccc</value>
              </list>
          </property>
      </bean>
    
  • 或者在list集合中注入引用类型

    <bean id="user1" class="com.zyl.domain.User">
        <property name="age" value="12"></property>
        <property name="name" value="zyl"></property>
    </bean>
    <bean id="user2" class="com.zyl.domain.User">
        <property name="age" value="13"></property>
        <property name="name" value="zyl2"></property>
    </bean>
    <bean id="userDao" class="com.zyl.dao.impl.UserDaoImpl">
        <property name="userList">
            <list>
                <ref bean="user1"/>
                <ref bean="user2"/>
            </list>
        </property>
    </bean>
    
  • map集合注入

    <bean id="u1" class="com.domain.User"/>
    <bean id="u2" class="com.domain.User"/>
    <bean id="userDao" class="com.dao.impl.UserDaoImpl">
        <property name="userMap">
            <map>            
                <entry key="user1" value-ref="u1"/>
                <entry key="user2" value-ref="u2"/>
            </map>
        </property>
    </bean>
    
  • properties集合注入

    <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl">
        <property name="properties">
            <props>
                <prop key="p1">aaa</prop>
                <prop key="p2">bbb</prop> 
                <prop key="p3">ccc</prop>
            </props>
        </property>
    </bean>
    

spring引入其他配置文件

<import resource="applicationContext-xxx.xml"/>