zoukankan      html  css  js  c++  java
  • 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实现!如果两个都找不到的情况下,就报错!

    • 执行顺序不同

     

  • 相关阅读:
    搭建Apache服务器并使用自签证书实现https访问
    常见加密算法
    awk命令用法
    systemd的新特性及常见的systemd unit类型分析
    kickstart文件制作与光盘镜像制作
    grub启动引导程序配置及命令行接口详解
    Linux启动流程(CentOS6)
    Linux相关网络命令
    rpm与yum,at与crontab,sed命令使用
    腾讯明眸极速高清升级2.0,助力韩国赛事超高清5G直播
  • 原文地址:https://www.cnblogs.com/Gazikel/p/14907288.html
Copyright © 2011-2022 走看看