我正在開發服務的Java API,並且我想將它提取到庫中。 我使用春天4.3.3在上下文啓動之前提供外部Bean
現在有一個叫ApiConfig
豆這是簡單的POJO。
public class ApiConfig {
private String host;
private String username;
private String password;
}
並且從屬性文件中讀取值。
我希望能夠在之前構建並提供此類上下文開始(幾個組件具有此類作爲@Autowired
依賴關係)。
例如:
public class LoginService {
@Autowired
private ApiConfig apiConfig
[...]
}
基本上,我願做這樣的事情:
public static MyApi get(ApiConfig apiConfig) {
//Here I want to provide this apiConfig as singleton bean that would be used everywhere
provide somehow this class as bean
// here all beans are loaded and the it fails because it cannot resolve ApiConfig
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ContextConfig.class);
MyApi myApi= context.getBean(MyApi.class);
return myApi;
}
的方法MyApi.get(AppConfig的)將加入依賴使用由其他Java應用程序在pom.xml
有沒有一種方法可以做到這一點?提供ApiConfig bean,然後初始化所有應用程序?
基本上可以讓Spring知道還有這個bean,從上下文中new AnnotationConfigApplicationContext(ContextConfig.class)
UPDATE
的想法會是這樣,在使用這個庫的任何應用程序之前。
public static void main(String asdas[]) {
ApiConfig config = new ApiConfig();
config.setUsername("BOBTHEUSER");
//config.set etc
MyApi api = MyApi.get(config);
api.doOperation();
爲什麼之前創建使用
@DependsOn
註釋進行初始化?只要把它定爲一個普通的spring bean,只需要注入值。您不需要在應用程序上下文的範圍之外初始化它。 –已更新問題 – Manza