Spring依赖注入DI

1、java代码中属性注入的三种方式
(1)使用set方法注入

public class User(){
    private String username;
    public void setuserName(String userName){
        this.username = userName;
    }
}
User user = new User();
user.setuserName("abc");

(2)有参构造注入

public class User(){
    private String username;
    public User(String userName){
        this.username = userName;
    }
}
User user = new User("abc");

(3)使用接口注入

public interface Dao(){
     public void delete(String username);   
}
public class DaoImpl implements Dao(){
    private String username;
    public void delete(String username){
        this.username = username;
    }
}

2、Spring支持前两种属性注入
(1)set方法注入(重点)

<!-- 使用set方法注入属性 -->
<bean id="user" class="cn.jieou.spring.user">
    <!-- 注入属性
        name属性值:类里面定义的属性名
        value属性:设置具体的值
    -->
    <property name="username" value="MJ_USERNAME"></property>
</bean>

(2)有参数构造注入

<!-- 使用有参数构造注入属性 -->
<bean id="user" class="cn.jieou.spring.user">
    <!-- 使用有参构造注入 -->
    <constructor-arg name="username" value="MJ_USERNAME"></constructor-arg>
</bean>

3、注入对象类型属性

<!-- 注入对象类型属性 -->
<!-- 1、配置service和dao对象 -->
<bean id="userDao" class="cn.jieou.spring.UserDao"></bean>
<bean id="userService" class="cn.jieou.spring.UserService">
    <!-- 注入dao对象
        name属性值:service类里面属性名称
                    现在不要写value属性,因为刚刚是字符串,现在是对象
        写ref属性:dao配置bean标签中id的值
    -->
    <property name="userDao" ref="userDao"></property>
</bean>

4、小结
依赖注入降低了依赖和被依赖类型间的耦合,在修改被依赖的类型实现时,不需要修改依赖类型的实现,同时,对于依赖类型的测试,可以更方便的使用mocking object替代原有的被依赖类型,以达到对依赖对象独立进行单元测试的目的。最后需要注意的是,依赖注入只是控制反转的一种实现方式。控制反转还有一种常见的实现方式称为依赖查找。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级奶爸MJCX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值