@Value 可以为属性注入某些值,支持字符串,spel表达式和配置文件的方式
@Value("caraliu") private String name; @Value("#{29-5}") private int age; @Value("${spring.desc}") private String desc;
在使用配置文件的时候,要将配置文件读入运用中:
在配置类上加入: @PropertySource(value={"classpath:/caraliu.properties"})
然后可以到运用的环境中读取到spring.desc 这个值caraliu.properties
通过:applicationContext.getEnvironment().getProperty("spring.desc")可以获取
@Autowired 依赖注入,根据类型注入(如果该类型有多个类,那么会根据属性名去拿对应的那个)(默认时一定要装入一个类,如果没有该类型的类,会抛出异常,可以设@Autowired(required = false),那么没有就为null,不会抛出异常)
也可以通过@Qualifier("myService")声明注入的那个bean的id
@Primary 首选被装入,加入这个注解@Qualifier("myService")可以根据id声明注入对应的bean
@Resource 根据id名称注入,默认是属性名,也可以指定id(java规范,其他ioc框架也能用)
@Inject要使用前要引入pom的依赖。 (java规范,其他ioc框架也能用)
xxxAware可以将xxx注入到当前类中,那么就可以使用xxx的功能,xxxAware的功能是通过xxxProcessor来实现的,每一个xxxAware都会有对应的xxxProcessor处理
激活相应的环境 @Profile("default") 可以标注在类上(作用范围整个类)或者方法上(作用范围是该方法)
假设@Profile("dev")如何不激活dev环境,那么相应的配置不起作用。
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.getEnvironment().setActiveProfiles("dev","test");
applicationContext.register(Configure.class);
applicationContext.refresh();
经过上述配置,dev环境的配置都会起作用