spring总结(二)

  1. 使用@Autowired 自动装配

这个注解可以使用在类和setter 方法属性上

public class MovieRecommender {

    @Autowired(required=false)
    @Qualifier("main")
    private MovieCatalog movieCatalog;

    // ...
}

Qualifier:属性表示在按类型查找有歧义时,按Qualifier 指定的标识进行查找

required=false:表示没有可装配的对象时,可以为null

public class SimpleMovieLister {

    private MovieFinder movieFinder;

    @Autowired(required = false)
    public void setMovieFinder(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }

    // ...
}

setter 方法上的@Autowired 修饰方法形参

@Autowired 还可以放在构造方法上,或者其他任何方法上

  1. @Primary

表示在没有使用Qualifier 明确指定的情况下,首选使用这个bean

    @Bean
    @Primary
    public MovieCatalog firstMovieCatalog() { ... }
  1. spring 还支持@Resource(JSR250) 和 @Inject (JSR330),它们都是java规范的注解
  • @Resource 可以和@Autowired 一样实现自动装配功能,但不能和spring 的@Qualifier, @Primary等注解结合使用
  • @Inject 可以和 @Primary 结合使用
  1. @Autowired 标注在构造方法与@bean 方法上
@bean
public Color color(@Autowired Car car) {
    Color color = new Color();
    color.setCar(car);
    return color;
}

这里的@Autowired 可以省略

@Autowired
public Boss(Car car) {
    this.car = car;
}

构造方法在只有一个的情况下@Autowired 可以省略

  1. 实现Aware 接口,可以获取bean的一些相关信息

  2. Profile

使用Profile 可以动态的激活和切换一系列组件,未指定@Profile 标识的bean 任何环境都可用,指定@Profile 标识的bean,只有匹配的环境才可用,默认环境是“default”

修改环境标识的几种方法:

  • 修改命令行参数

在虚拟机参数位置加载 -Dspring.profiles.active=test

  • 使用代码的方式
// 1. 创建一个applicationContext
AnnotationConfigApplication applicationContext = new AnnotationConfigApplication();
// 2. 设置需要激活的环境
applicationContext .getEvironment().setActiveProfiles("test", "dev");
// 3. 注册配置类,启动容器刷新

@Profile 还可以写在类上,此时整个类在匹配的环境中才可以使用

  1. @import

@import 在spring4.2 以前只能导入配置类,新版本中则可以直接导入POJO,@import 还可以使用实现ImportSelector和ImportBeanDefinitionRegistrar接口的方式导入bean,详情参考博客

猜你喜欢

转载自blog.csdn.net/u013738122/article/details/84841457