我想在應用程序啓動期間(或者在結束時)執行一些代碼。我使用@PostConstruct批註,@EventListener(ContextRefreshedEvent.class),實現了InitializingBean,實現了ApplicationListener,我發現了一些資源。它們都在啓動時執行我的代碼,但是應用程序屬性的佔位符不會被替換爲時刻。所以如果我的類有一個具有@Value(「$ {my.property}」)註解的成員,它將返回「$ {my.property}」,而不是在yaml(或任何地方)中定義的實際值。 如何在更換髮生後完成我的代碼?在Spring啓動時執行方法
0
A
回答
0
您可以實施InitializingBean
,該方法的名稱爲afterPropertiesSet()
。此方法將在所有屬性佔位符被替換後調用。
0
@PostConstruct在bean創建時被調用。 Ypu必須檢查彈簧是否找到帶有屬性的文件。
+0
使用評論或編輯 –
0
如果你有一個配置類,@Configuration,那麼你可以嘗試明確導入您的屬性文件中加入以下注釋:你的配置類和後
@PropertySource("classpath:your-properties-file.properties")
任何其他非配置資源應加載@Value註釋應該可以正常工作。
0
你應該實現ApplicationListener<ContextRefreshedEvent>
這樣的:
@Component
public class SpringContextListener implements ApplicationListener<ContextRefreshedEvent> {
@Value("${my.property}")
private String someVal;
/**
* // This logic will be executed after the application has loded
*/
public void onApplicationEvent(ContextRefreshedEvent event) {
// Some logic here
}
}
相關問題
- 1. 在啓動時執行Selenium
- 2. 執行PS在啓動時
- 3. 使用Celery在啓動時執行方法
- 4. 如何讓Grails在啓動時執行控制器方法?
- 5. 在屏幕啓動時運行方法
- 6. 如何在Spring中啓動時只執行一次SQL腳本?
- 7. 在Spring啓動時運行服務器時在啓動模式下啓動GWT
- 8. 讓GDB自動執行在啓動時
- 9. 啓動時執行操作
- 10. 啓動時執行控制器方法(Grails)
- 11. Spring @Scheduled執行方法在VPS中執行三次
- 12. Spring事務 - 在新事務中記錄方法執行時間
- 13. 在CDI啓動時執行代碼
- 14. 在Tomcat啓動時執行JSP
- 15. 在viewcontroller的啓動時執行segue
- 16. 在啓動時執行m文件
- 17. Django - 在啓動時執行代碼
- 18. 在xtext啓動時執行代碼?
- 19. VSIX:在VS啓動時執行代碼
- 20. 在Emacs啓動時執行命令(emacs.el)
- 21. liquibase.bat在執行時未啓動
- 22. 僅在Spring應用程序上下文啓動時運行一個方法?
- 23. 有沒有辦法在spring啓動時運行madvoc?
- 24. 啓動應用程序彈簧啓動後在類中執行某些方法
- 25. @Autowired後執行Spring @Bean方法
- 26. Spring AOP - 無法執行方面
- 27. Spring 3.1 @Cacheable - 仍然執行的方法
- 28. 無法在啓動時在Raspberry Pi上執行Java程序
- 29. 無法在執行CMD腳本時在Dockerfile中啓動Mysql
- 30. 在網絡端啓動應用程序的執行方法
春天配置將解決放在'@ Value'內的財產的佔位符。如果未加載,則表示不正確的屬性名稱,或者特定的yaml未加載到上下文中。當然你可以使用'@ PostConstuct'來設置會員 – Barath