サービスのJava APIを開発していて、ライブラリに展開したいと思います。 私は今、単純なPOJOですApiConfig
と呼ばれるBeanがあり春4.3.3コンテキストの開始前に外部Beanを提供する
を使用しています。
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アプリケーションで使用されますin pom.xml
これを行う方法はありますか? ApiConfig Beanを提供し、すべてのアプリケーションを初期化しますか?
基本的に春はこの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();
なぜ変更しましたか?ちょうどそれを通常の春の豆にして、値を注入するだけです。アプリケーションコンテキストの範囲外で初期化する必要はありません。 –
更新された質問 – Manza