Spring 学习笔记(二)——装配 bean

来源:互联网 发布:如何辨别网络谣言 编辑:程序博客网 时间:2024/05/21 21:37

一、自动装配 bean

    配置文件自动装配的四种方式:

1. byName

2. byType
    当 Spring 检查到有多个 bean 符合指定类型时,设置 primary = "false" 表示该 bean 不是候选 bean,但是默认是 true

    还可以设置 autowire-candidate = “false”,以在自动装配时忽略该 bean 作为候选 bean

3. constructor

    constructor 与 byType 具有相同的局限性

4. autodetect
    先通过构造器装配,如果没有匹配的 bean 则再通过 byType 匹配

5. 定义默认自动装配

    默认的优先级低于 bean 本身设置的优先级

注:同一个 bean 配置中不能同时使用 constructor 装配和 <constructor-arg>元素

二、使用注解装配

1. 启用注解

2. @Autowired
    @Autowired 注解不仅可以写在 setter 方法上,属性上,还可以写在需要自动装配 bean 的任意方法上,也包括构造方法。
    @Autowired(required = "false") 可以设置 required 属性,指定自动装配是否可选。
    @Qualifier("beanName") 指定自动装配时选择的 bean,当有多个 bean 满足自动装配时

    自定义 Qulifier 注解

3. @Inject
@Named 相当于 Spring 的 @Qulifier

4. 在注解中使用表达式
@Value 用来设置 String 类型和基本数据类型的值,可以结合 SpEL 使用

三、自动检测需要注册到 Spring 上下文中的 bean


1. 为自动检测标注 bean

2. 过滤扫描

四、使用 Spring 基于 Java 的配置

    使用 @Configuration 注解 Java 类相当于 XML 文件的 <beans> 元素, @Bean 相当于 XML <bean> 元素

@Configurationpublic class Beans {    @Bean    public MyBean myBeanId(){        MyBean mb = new MyBean();        // 方法体内可以实现想要的逻辑,比如引用其它 bean        mb.setMyBean2(myBeanId2);        return mb;    }    @Bean    public MyBean2 myBeanId2(){        return new MyBean();    }}

0 0