網上有很多誤導人的博文,在此親測記錄下。
下面介紹兩種方法,要注意這兩種方法必須在類上加@Component註解,這樣Spring容器在加載時纔會初始化相應註解下的方法。
1、 set注入法:
private static boolean debug;
//:false的意思是當gateway.request.log.debug不存在時默認爲false,否則不存在會報錯
@Value("${gateway.request.log.debug:false}")
public void setDebug(boolean debug) {
類名.debug = debug;
}
Spring容器會在啓動時執行@Value註解下的setDebug()方法。網上有人說必須是static 的set方法,坑人不淺,下面這種寫法肯定是不行的(靜態方法不會被容器加載時加載,只能在調用時設值)
private static boolean debug;
//static方法不行
@Value("${gateway.request.log.debug:false}")
public static void setDebug(boolean debug) {
類名.debug = debug;
}
2、@PostConstruct註解法:
private static boolean debug;
//臨時變量
@Value("${gateway.request.log.debug:true}")
private boolean debug_temp;
@PostConstruct
public void init() {
//把臨時變量獲取到的值設置到static變量中
類名.debug = debug_temp;
}