3.依赖注入 spring_di

本文详细介绍了Spring框架中的依赖注入(DI)概念,包括setter方式、构造函数方式、注解方式和P命名空间四种实现方式,并通过实例展示了如何在Java类和配置文件中配置DI。DI是控制反转(IoC)的一种实践,它允许外部容器管理对象及其依赖关系,提高了代码的灵活性和可测试性。

概念:

依赖注入[Dependency Injection]指在运行期,由外部容器动态地将依赖对象[要使用的对象]注入到组件中.
    注意: 依赖注入的前提是控制反转,被注入对象和接受注入的对象都必须被Spring容器管理.

方式1: setter方式

Java类:

private 普通属性类型 属性名;
private 自定义类类型 属性名;
private 集合类型 属性名;
//提供setter和getter

配置文件:

    <bean id="Bean对象匿名" class="类全名">
        <property name="属性名" value="值" />
        <property name="属性名" ref="Bean对象匿名" />
        <property name="属性名">
            <list>\<value>
            <set>\<value>
            <map>\<entry>
            <props>\<prop>
        </property>
    </bean>

方式2: 构造函数

Java类:

private 普通属性类型 属性名;
private 自定义类类型 属性名;
private 集合类型 属性名;
//提供有参构造方法

配置文件:

    <bean id="Bean对象匿名" class="类全名">
        <constructor-arg index="参数索引" value="值" />
        <constructor-arg index="参数索引" type="类全名" ref="Bean对象匿名" />
        <constructor-arg index="参数索引" >
            <list/set/map/props>[参考setter方式]
        </constructor-arg>
    </bean>

方式3: 注解方式

Java类与配置文件:

    a.配置文件中context命名空间和context约束文件的地址
    b.配置文件中添加<context:component-scan base-package="包名" />
    c.在Java类的属性或setter上添加注解: @Autowired或@Resource.

    @Autowired:
    格式: @Autowired [(required=true)]
    说明:

  1.     编写在属性或setter上,表示将Spring容器中同类型的Bean对象赋给该属性
  2.     根据属性类型到Spring容器中寻找bean对象,然后注入依赖对象
  3.     required默认为true,即配置文件中必须有同类型的Bean对象,否则报错

    @Resource:
    格式: @Resource[(name="Bean对象匿名")]
    说明:

  1.     编写在属性或setter上面,表示将Bean对象匿名对应的对象赋给该属性
  2.     name属性值为Bean对象匿名,表示将Bean对象匿名对应的对象赋给该属性
  3.     @Resource标注在setter上或不设置name属性,则name属性值默认为属性名
  4.     若未设置name属性,并且按照默认名称仍然找不到依赖对象时,@Resource将会按属性类型查找同类型的bean对象,然后注入到属性中.

方式4: P命名空间

Java类:

    提供属性的setter和getter方法,无需其他操作.

配置文件:

    第1步: 添加命名空间
        xmlns:p="http://www.springframework.org/schema/p"
    第2步: 注册bean,并注入数据
        <bean id="bean匿名" class="类全名" p:属性名/属性名-ref="值/匿名" />

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

吾欲乘风归去,又恐琼楼玉宇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值