Spring 06 - Bean的自动装配(配置文件,注解)。

1.含义:自动寻找bean对象进行装配

2.自动装配方式
2.1 配置文件
2.1.1 byName
在容器上下文中查找与set方法后面的内容相同的id的bean对象
(bean的id需要唯一)

<bean id="person" class="com.qq.test3.Person" autowire="byName">
    <property name="name" value="CXK"/>
</bean>

2.1.2 byType
在容器上下文中查找与属性类型相同的bean对象
(bean的class需要唯一)

<bean id="person" class="com.qq.test3.Person" autowire="byType">
    <property name="name" value="CXK"/>
</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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="sport" class="com.qq.test3.Sport">
        <property name="name" value="badminton"/>
    </bean>

    <bean id="movie" class="com.qq.test3.Movie">
        <property name="name" value="肖申克的救赎"/>
    </bean>

<bean id="person" class="com.qq.test3.Person" autowire="byName">
    <property name="name" value="CXK"/>
</bean>

</beans>

2.2 使用注解的自动装配
2.2.1 实现步骤
(1)导入约束

<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">

(2)开启注解支持

  <context:annotation-config/>

(3)加入 @Autowired 到相关属性上,不需要set方法支持。

    private String name;

    @Autowired
    private Sport sport;

    @Autowired
    private Movie movie;

2.2.2 @Autowired扩展
(1)qualifier指定bean id

    @Autowired
    @Qualifier(value ="sport1")
    private Sport sport;

(2)某种程度上,resource可替代autowired

    @Resource(value = "sport1")
    private Sport sport;

区别:
autowired通过byName方式实现;
resource默认通过byName方式实现,如果找不到Name,则通过byType实现。

(3)Nullable 标记说明这个字段可以为空

public class SimpleMovieLister {

    @Autowired
    public void setMovieFinder(@Nullable MovieFinder movieFinder) {
        ...
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值