前言
在实际开发中,我们经常需要给静态属性赋值,值来源于yml或者properties文件。就不能单独去使用@Value注解了,下面介绍几种方式进行属性注入。
一、set方法注入
@Component
public class Static {
public static String APP_ID;
public static String APP_USER;
@Value("${channl.ali.appId}")
public void setAppId(String appId) {
APP_ID = appId;
}
@Value("${channl.ali.appUser}")
public void setAppUser(String appUser) {
APP_USER = appUser;
}
}
注:该类需要被Spring管理,setXx方法名可以随便起
使用
@Test
void contextLoads() {
System.out.println(Static.APP_ID);
System.out.println(Static.APP_USER);
}
二、@PostConstruct
@Value("${channl.ali.appId}")
private String appId;
@Value("${channl.ali.appUser}")
private String appUser;
@Autowired
private Environment environment;
@PostConstruct
public void init(){
// APP_ID = environment.getProperty("channl.ali.appId");
// APP_USER = environment.getProperty("channl.ali.appUser");
APP_ID = appId;
APP_USER = appUser;
}
注:使用Environment 和 @Value方式都可以
三、实现InitializingBean重写afterPropertiesSet方法
@Value("${channl.ali.appId}")
private String appId;
@Value("${channl.ali.appUser}")
private String appUser;
@Autowired
private Environment environment;
@Override
public void afterPropertiesSet() throws Exception {
// //APP_ID = environment.getProperty("channl.ali.appId");
// // APP_USER = environment.getProperty("channl.ali.appUser");
APP_ID = appId;
APP_USER = appUser;
}
注:使用Environment 和 @Value方式都可以
代码地址:https://gitee.com/gongjienianq/spring-static
网友评论