我會盡力向您解釋我的問題。Spring bean初始化之前的初始化
我有一個bean,其工作是將文件從我的類路徑複製到服務器上的本地文件夾。 這個bean這樣定義和使用屬性的值就知道位置,它應該複製文件:
@Service("wsConfig")
public class WorkspaceConfig implements InitializingBean {
@Value("path.to.copy")
String path;
@Value("classpath.to.copy")
String folder
@Override
public void afterPropertiesSet() {
/** Do my copy stuff */
}
}
然後,我有一些豆子取決於該副本的結果,那些被這樣定義:
@PropertySource(value = "file://${user.home}/${path.to.copy}/file.properties")
@Service
public class Bean{
/** Bean Stuff */
}
我的問題是,當bean被初始化時,當彈簧將佔位符與值鏈接在一起時,文件位於:file://${user.home}/${path.to.copy}/file.properties
不存在。 所以我想知道是否有一種方法可以在任何其他bean之前創建並調用第一個bean,以正確地複製這些文件。
預先感謝您。
定義依賴它的其他bean。可能[取決於另一個bean](http://docs.spring.io/spring/docs/current/javadoc-api/org/ springframework/context/annotation/DependsOn.html)可能會有所幫助 –
這絕不會奏效。 '@ PropertySource'將在評估'@ Value'註解之前被處理,並且它不是一個多遍處理,所以簡單地說它就不起作用。在你的'ApplicationContext'被初始化之前,你需要執行這個邏輯,並且你需要把它放入,比如'ApplicationContextInitializer'。 –