Spring-setter注入和构造器注入

使用setter方法注入简单类型和引用类型

先给类中的属性创建setter方法

简单类型(基本数据类型和String):

在xml文件中使用 property 标签,name,value属性

引用类型:

在xml文件中使用property标签,name,ref属性

name:对应BookServiceImpl中的属性名

ref:对应配置文件中注册的bean的id

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="bookDao" class="com.hyk.dao.impl.BookDaoImpl">
        <property name="name" value="哈哈哈"/>
        <property name="num" value="111"/>
    </bean>
    <bean id="userDao" class="com.hyk.factory.UserDaoFactoryBean"/>

    <bean id="bookService" class="com.hyk.service.impl.BookServiceImpl">
        <property name="bookDao" ref="bookDao"/>
        <property name="userDao" ref="userDao"/>
    </bean>
</beans>

使用构造器注入简单类型和引用类型

先给类创建对应的构造方法方法

简单类型:

在xml文件中使用 constructor-arg 标签,name,value属性

引用类型:

在xml文件中使用 constructor-arg 标签,name,ref属性

name:对应BookServiceImpl中的属性名

ref:对应配置文件中注册的bean的id

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="bookDao" class="com.hyk.dao.impl.BookDaoImpl">
        <constructor-arg name="name" value="蛤蛤蛤"/>
        <constructor-arg name="num" value="123"/>
    </bean>
    <bean id="userDao" class="com.hyk.factory.UserDaoFactoryBean"/>

    <bean id="bookService" class="com.hyk.service.impl.BookServiceImpl">
        <constructor-arg name="bookDao" ref="bookDao"/>
        <constructor-arg name="userDao" ref="userDao"/>
    </bean>
</beans>

以上方法,耦合度很高。、

依赖注入方式选择

1. 强制依赖使用构造器进行,使用setter注入有概率不进行注入导致nu11对象出现
2.可选依赖使用setter注入进行 ,灵活性强
3. Spring框架倡导使用构造器,第三方框架内部大多数采用构造器注入的形式进行数据初始化,相对严谨
4.如果有必要可以两者同时使用, 使用构造器注入完成强制依赖的注入, 使用setter注入完成可选依赖的注入
5.实际开发过程中还要根据实际情况分析,如果受控对象没有提供setter方法就必须使用构造器注入
6.自己开发的模块推荐使用setter注入
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值