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实现!如果两个都找不到的情况下,就报错!

  • 执行顺序不同

 

上一篇:每天进步一点点~注解篇02


下一篇:spring5注解