美文网首页
[使用]-自动装配

[使用]-自动装配

作者: lsh的学习笔记 | 来源:发表于2020-05-27 20:38 被阅读0次

    自动装配

    @Autowired

    • 可以标注在构造器、参数、方法、字段上。
    • 当bean只有一个有参构造器时,可以省略标注。
    • 在setter方法或者@Bean标注的方法参数,可以省略。
    查找顺序
    1. 默认优先按照类型去容器中查找对应bean:applicationContext.getBean(BookDao.class);
    2. 如果找到多个相同bean,再将属性名作为bean的ID去容器中查找:applicationContext.getBean("bookDao");
    使用
    1. 使用 @Qualifier("bookDao2") 明确指定要注入bean的ID(需要和@Autowired 配合使用);
    2. 自动装配默认一定要将属性赋值,没有找到就会报错;
      a. 可以使用 @Autowired(required=false) 调整。
    3. @Primary:让spring进行自动注入的时候,默认使用首选的bean;
      a. 也可以继续使用@Qualifier指定需要注入的bean的名字;

    @Resource

    JSR250 Java规范的注解。
    默认按bean名称进行装配。
    不支持 @Qualifier 、 @Primary、required=false 功能。

    @Inject

    JSR330 Java规范的注解。

    使用的时候需要导入依赖:

    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency>
    

    支持 @Qualifier 、 @Primary,但是不支持 required=false 功能。

    Aware 注入spring 底层组件 & 原理

    为什么需要 xxxAware?

    用户自定义的bean 想要使用spring容器底层的一些bean(ApplicationContext, BeanFactory,xxx);

    1. 自定义bean实现 xxxAware;在创建对象时,会回调接口规定的方法,以注入相关 bean。
    2. xxxAware 功能———对应处理器——> xxxProcessor 。

    Profile 环境定义

    用途

    spring提供的可以根据当前环境,动态激活和切换不同的组件的功能。

    开发环境、测试环境、生产环境。

    @Profile:指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件。

    标注位置

    1. 加了环境标识的bean,只有这个环境被激活的时候才能注册到容器中。默认是default环境。
    2. 写在配置类上,只有是指定的环境的时候,整个配置类里面的所有配置才能开始生效。
    3. 没有标注环境标识的bean在,任何环境下都是加载的。

    激活方法

    1. 使用命令行动态参数: 在虚拟机参数位置加载
      -Dspring.profiles.active=test
    2. 代码的方式激活某种环境;

    相关文章

      网友评论

          本文标题:[使用]-自动装配

          本文链接:https://www.haomeiwen.com/subject/lfmgahtx.html