springboot-注解使用(4)-@Value @PropertySource @Autowired @qualifier @Primary @Resource @Profile

@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环境的配置都会起作用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章