SpringBoot给静态属性赋值

2020-11-22  本文已影响0人  程序员小杰

前言

在实际开发中,我们经常需要给静态属性赋值,值来源于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

上一篇 下一篇

猜你喜欢

热点阅读