• Spring_Bean的自动装配


    7 Bean的自动装配

    • 自动装配是Spring满足bean依赖的一种方式!

    • Spring会在上下文中自动寻找,并自动给bean装配属性!

    在Spring中有三种装配的方式:

    1.在xml中显示的配置

    2.在java中显示配置

    3.隐式的自动装配【重点】

     

    7.1 byName自动装配

    byName会自动在容器上下文中查找,和自己对象set方法后面的值对应的beanid

    <bean id="cat" class="com.gazikel.pojo.Cat"></bean>
    <bean id="dog" class="com.gazikel.pojo.Dog"></bean>
    <bean id="person" class="com.gazikel.pojo.Person" autowire="byName">
        <property name="name" value="Gazikel"></property>
    </bean>

    7.2 byType自动装配

    byType会自动在容器上下文中查找,和自己对象属性类型相同的bean

    <bean class="com.gazikel.pojo.Cat"></bean>
    <bean class="com.gazikel.pojo.Dog"></bean>
    <bean id="person" class="com.gazikel.pojo.Person" autowire="byType">
        <property name="name" value="Gazikel"></property>
    </bean>

    小结:

    • 在byName的时候,需要保证所有bean的id唯一,并且这个bean需要和自动注入的属性的set方法的值一致!

    • byType的时候,需要保证所有bean的class唯一,并且这个bean需要和自动注入的属性的类型一致!

    7.3 使用注解实现自动装配

    jdk1.5支持的注解,Spring2.5就支持注解了!

    1.导入约束

    2.配置注解的支持

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

    @Autowired

    直接属性上使用即可!

    也可以在set方法上使用!

    使用Autowired我们可以不用编写set方法了,前提是你这个自动装配的属性在IOC容器中存在,且符合名字byName

     

    @Nullable 
    @Autowired(required = false)

    如果显式定义了Autowired的required属性为false,说明这个对象可以为null,否则不允许为空

     

    @Qualifier

    如果@Autowired自动装配的环境比较复杂,自动装配无法通过一个注解 【@Autowired】 完成的时候,我们可以使用

    @Qualifler(value = "")

    去配合@Autowired的使用,完成装配

    @Resource

    @Autowired和@Resource的区别:

    • 都是用来自动装配的,都可以放在属性字段上

    • @Autowired通过byType的方式实现,必须要求这个对象存在。

    • @Resource默认通过byName的方式实现,如果找不到名字,则通过byType实现!如果两个都找不到的情况下,就报错!

    • 执行顺序不同

     

  • 相关阅读:
    Git的使用---6. 分支管理
    Git的使用---5. 工作区、暂存区和仓库
    虚拟机中安装 win2012 r2 tools工具 提示需要安装kb2919355
    【实验】OSPF的基本配置
    【实验】 OSPF和BFD联动
    【实验】VRRP+链路跟踪+BFD联动
    【实验】基于接口和全局DHCP
    【实验】静态LACP的链路聚合
    【实验】手工负载分担链路聚合
    【实验】vxlan的静态配置
  • 原文地址:https://www.cnblogs.com/Gazikel/p/14907288.html
Copyright © 2020-2023  润新知