不完全spring学习-7赋值和注入

@Value赋值

public class Person {
    @Value("Tom")
    private String name;
    @Value("#{15+2}")
    private int age;
    @Value("${person.nickName}")
    private String nickName
}

@Configuration
 @PropertySource(value = {"classpath:/application.properties"})
public class Config {
     @Bean
      public Person person() {
           return new Person();
      }
}

自动注入属性

  1. @Autowire @Qualifier @Primary自动注入
    1. 两个相同类型组件时,可用Qualifier("beanName")的方式指定要装配的bean
    2. @Autowire(required=false) 避免属性未赋值报错
    3. @Primary在bean上做注解,指定默认首选要转配的bean,如果使用Qualifier还是会被注入
  2. @Resource,@Inject
    1. @Resource: 默认是按照组件名称进行装配,没有类似@Primary,和@Autowire(requied=false)的功能
    2. @Inject: 需要导入javax.inject 和Autowired的功能类似,没有required=false功能

方法和构造函数注入

  1. @Autowired : 标注在方法上,注入参数对象
  2. @Bean:标准的方法不标准Autowired也可以注入方法的参数对象

Spring容器的底层功能注入到自定义组件中

  1. 自定义组件使用ApplicationContext,FactoryBean等只需实现xxxAwre,这些都是继承自Aware接口
  2. xxxAware:功能使用xxxProcessor

Profile:

spring为我们提供的可以根据当前环境,动态的激活和切换一些列组件的功能.指定组件在哪个环境的情况下才会被注册到组件上

切换环境的方法

  1. 设置VM arguments为:-Dspring.profiles.active=test
  2. 代码方式:无参构造器方式后,context.getEnvironment().setActiveProfiles("test");
    // 构造容器片段
    //step1. 用无参构造器生成一个容器
    AnnotationConfigApplicationContext context= 
                                 new AnnotationConfigApplicationContext();
    // step2.设置profiles,可设置多个
    context.getEnvironment().setActiveProfiles("test","dev");
    // step3 注册配置类
    context.register(Config.class);
    // step4  刷新容器
    context.refresh();
    
  3. 给配置类加@Profile,然后有选择的加载

你可能感兴趣的:(不完全spring学习-7赋值和注入)