@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();
}
}
自动注入属性
- @Autowire @Qualifier @Primary自动注入
- 两个相同类型组件时,可用Qualifier("beanName")的方式指定要装配的bean
- @Autowire(required=false) 避免属性未赋值报错
- @Primary在bean上做注解,指定默认首选要转配的bean,如果使用Qualifier还是会被注入
- @Resource,@Inject
- @Resource: 默认是按照组件名称进行装配,没有类似@Primary,和@Autowire(requied=false)的功能
- @Inject: 需要导入javax.inject 和Autowired的功能类似,没有required=false功能
方法和构造函数注入
- @Autowired : 标注在方法上,注入参数对象
- @Bean:标准的方法不标准Autowired也可以注入方法的参数对象
Spring容器的底层功能注入到自定义组件中
- 自定义组件使用ApplicationContext,FactoryBean等只需实现xxxAwre,这些都是继承自Aware接口
- xxxAware:功能使用xxxProcessor
Profile:
spring为我们提供的可以根据当前环境,动态的激活和切换一些列组件的功能.指定组件在哪个环境的情况下才会被注册到组件上
切换环境的方法
- 设置VM arguments为:-Dspring.profiles.active=test
- 代码方式:无参构造器方式后,context.getEnvironment().setActiveProfiles("test");
// 构造容器片段 //step1. 用无参构造器生成一个容器 AnnotationConfigApplicationContext context= new AnnotationConfigApplicationContext(); // step2.设置profiles,可设置多个 context.getEnvironment().setActiveProfiles("test","dev"); // step3 注册配置类 context.register(Config.class); // step4 刷新容器 context.refresh();
- 给配置类加@Profile,然后有选择的加载