我有一個SpringBootApplication,我想從屬性文件中讀取一個值。Spring將屬性文件中的值讀入@SpringBootApplication類
我@SpringBootApplication類是這樣的:
@SpringBootApplication
@ComponentScan(basePackages = "it.test")
@PropertySource("classpath:application.properties")
public class Application {
private static Logger log = LogManager.getLogger();
@Value("${server.modem.delay}")
private int modemSmsDelay;
@Order(Ordered.HIGHEST_PRECEDENCE)
@Bean(initMethod = "start", destroyMethod = "stop")
public Service smsService() {
settings();
Service service = Service.getInstance();
return service;
}
private void settings() {
log.debug("Delay per invio sms " + modemSmsDelay +"ms");
Settings.gatewayDispatcherYield = modemSmsDelay;
}
}
不幸的是,在所謂的「設置」方法屬性modemSmsDelay的值爲0。另,如果在我的application.properties文件,它是1000
在其他我的應用程序的一部分,我可以讀取值沒有問題。
==== UPDATE =====
我解決了這個問題。事實上,我的代碼工作,不需要@PostConstruct,使@Value標籤工作,如果它是在幾個circustances可以理解。 我在Spring配置中遇到問題,無法執行所有註釋,例如@ PostConstruct,@ Autowire等。 我從Spring的日誌中注意到了這一點,其中彈出了一條警告消息。
你並不需要添加ComponentScan或PropertySource註解,作爲SpringBootApplication註釋已經包含了他們。 – Andonaeus
檢查'application.properties'的路徑是否正確,並且傳遞了正確的屬性名稱'server.modem.delay' – 11thdimension
他從構造函數中調用它。 –