spring03
本部分是自动装配的内容。
1、概述
**摘抄自秦老师 **
- 自动装配是使用spring满足bean依赖的一种方法
- spring会在应用上下文中为某个bean寻找其依赖的bean。
Spring中bean有三种装配机制,分别是:
- 在xml中显式配置;
- 在java中显式配置;
- 隐式的bean发现机制和自动装配。
这里我们主要讲第三种:自动化的装配bean。
Spring的自动装配需要从两个角度来实现,或者说是两个操作:
- 组件扫描(component scanning):spring会自动发现应用上下文中所创建的bean;
- 自动装配(autowiring):spring自动满足bean之间的依赖,也就是我们说的IoC/DI;
2、环境
-
People
package com.nevesettle.pojo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; public class People { private String name; @Autowired @Qualifier("cat321") private Cat cat; @Autowired private Dog dog; public String getName() { return name; } public void setName(String name) { this.name = name; } public Cat getCat() { return cat; } public void setCat(Cat cat) { this.cat = cat; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } }
-
Cat
package com.nevesettle.pojo; public class Cat { public void shout(){ System.out.println("miao.."); } }
-
Dog
package com.nevesettle.pojo; public class Dog { public void shout(){ System.out.println("wang.."); } }
2、配置
只需要在xml中注册相应的bean,然后开启自动装配即可。
<?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/>
<bean id="cat321" class="com.nevesettle.pojo.Cat"/>
<bean id="cat323211" class="com.nevesettle.pojo.Cat"/>
<bean id="dog" class="com.nevesettle.pojo.Dog"/>
<bean id="people" class="com.nevesettle.pojo.People"/>
</beans>
3、笔记
@Autowired
- 自动装配
- 首先校验的是bean的类型, 如果类型存在则匹配,如果存在多个,则校验名称
- 当名称多个时,可以配合 @Qualifier("xxx")来使用
@Resource
- java自带的自动装配
- 先校验的是名称,其次是校验类型, 都不存在时报错,没有@Autowired常用