としてインスタンスを登録春ブーツ私はJavaコード(春・ブートプロジェクト)内のBeanとしてデータソースインスタンスを登録しようとしています豆
は、私が書いたものです。 (このコードは動作しません。)
@Configuration
public class DatabaseConfig {
private Logger logger = Logger.getLogger(DatabaseConfig.class);
@Autowired
ApplicationContext context;
private Map<String, Map<String, String>> dsMap;
private Map<String, String> getTestDataSourceInfo() {
Map<String, String> ds = new HashMap<String, String>();
ds.put("driverClassName", "com.mysql.jdbc.Driver");
ds.put("url", "jdbc:mysql://123.456.78.912:3306/test");
ds.put("username", "testuser");
ds.put("password", "testuser");
return ds;
}
public DatabaseConfig() {
this.dsMap = new HashMap<String, Map<String, String>>();
dsMap.put("sampleDs", getTestDataSourceInfo());
}
@PostConstruct
public void loadDataSource() {
logger.info("DS ================================ :: " + String.valueOf(this.dsMap));
this.dsMap.forEach((k,v) -> {
logger.info("value ========================== :: " + String.valueOf(v));
DataSource aSource = DataSourceBuilder.create()
.driverClassName(v.get("driverClassName"))
.url(v.get("url"))
.username(v.get("username"))
.password(v.get("password"))
.build();
// PROBLEM STARTS ..............
// Add datasource instance with name to context
context.getAutowireCapableBeanFactory().autowireBean(aSource);
});
}
}
インスタンスにBeanを登録するための任意の適切な方法はありますか? 私はこれのための良いサンプルを見つけることができませんでした。私は上記のコードで期待されている何FYI
、...
- 春ブートアプリケーションが、それはそのコンストラクタでJavaインスタンスを作成します
Configure
- としてクラスの上に読みます
- そして、インスタンスをBeanとしてアプリケーションコンテキストに追加します。
loadDatasource
メソッド
しかし、動作していません。ですから、現在のSpring起動アプリケーションコンテキストにBeanとしてJavaインスタンスを追加する方法が不思議です。
スプリングブートには、データソース用の自動設定が付属しています。https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.htmlこれを使用する必要はありませんが、いずれにしても、スタンドアローン(自分自身を登録する)またはaut-configのいずれかで使用する方法を示すことができます – pandaadb
@pandaadb参考にしてくれてありがとうございました。私が知りたいのは、組み込みデータソースBeanの使い方ではなく、Javaアプリケーションを現在のアプリケーションコンテキストにBeanとして登録する方法です。私は投稿でコンテンツを編集する。 –