spring依赖注入


依赖注入方式

setter 注入

简单类型

  • 在bean中定义引用类型属性并提供可访问的 set 方法

    public class BookDaoImpl implements BookDao {
    
        private int connectionNum;
    
        public void setConnectionNum(int connectionNum) {
            this.connectionNum = connectionNum;
        }
    }
  • 配置中使用 property 标签 value 属性注入简单类型数据

    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
        <property name="connectionNum" value="100"/>
    </bean>

引用类型

  • 在 bean 中定义引用属性类型并提供可访问的 set 方法

    public class BookServiceImpl implements BookService, InitializingBean, DisposableBean {
        private BookDao bookDao;
    	public void setBookDao(BookDaoImpl bookDao) {
            this.bookDao = bookDao;
        }
    }
  • 配置中使用 property 标签 ref 属性注入引用类型对象

    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
    
    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
     	<property name="bookDao" ref="bookDao" />
    </bean>

构造器注入

简单类型(了解)

  • 在 bean 中定义引用类型属性并提供可访问的 set 方法

    public class BookDaoImpl implements BookDao {
    
        private int connectionNum;
    
        public void setConnectionNum(int connectionNum) {
            this.connectionNum = connectionNum;
        }
    }
  • 配置中使用 constructor - arg 标签 value 属性注入简单数据类型

    <bean id="bookDao" class="com.itheima.dao.impl.BookImpl">
    	<constructor - arg name="connectionNumber" value="10"/>
    </bean>

引用类型(了解)

  • 在 bean 中定义引用类型数据并提供可访问的构造方法

    public class BookServiceImpl implements BookService, InitializingBean, DisposableBean {
        private BookDao bookDao;
    	public BookServiceImpl(BookDao bookDao) {
    		this.bookDao = bookDao;
    	}
    }
  • 配置中使用 constructor - arg 标签 ref 属性注入引用类型对象

    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
    	<constructor-arg name="bookDao" ref="bookDao" />
    </bean>
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
  • 构造器注入 —— 参数适配 (了解)

    • 配置中使用 constructor - arg 标签 type 属性设置按形参类型注入

      <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
      	<constructor-arg type="int" value="10" />
          <constructor-arg type="java.lang.String" value="mysql" />
      </bean>
    • 配置中使用 constructor - arg 标签 index 属性设置按形参类型注入

      <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
      	<constructor-arg index="0" value="10" />
          <constructor-arg index="1" value="mysql" />
      </bean>
依赖自动装配
  • IoC容器根据 bean 所依赖的资源在容器中自动查找并注入到 bean 中的过程成为自动装配

  • 自动装配方式

    • 按类型 (常用)
    • 按名称
    • 按构造方法
    • 不启动自动装配
  • 配置中使用 bean 标签 autowire 属性设置自动装配的类型

    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl" autoWire="byType" />
  • 依赖自动装配 特征

    • 自动装配适用于引用类型依赖注入,不能对简单类型进行操作
    • 使用按类型装配时(byType)必须保障容器中相同类型的 bean 唯一。
    • 自动装配优先级低于 setter 注入与构造器注入,同时出现时自动装配配置失效
注入集合对象
  • 注入 properties 对象

    <property name="properties">
    	<props>
    		<prop key="county">ss</prop>
    		<prop key="province">sss</prop>
    		<prop key="city">ssss</prop>
    	 </props>
     </property>

文章作者: han yue
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 han yue !
评论
  目录