エントリポイントからgetBeanメソッドを使用してBeanを取得せずに@Autowiredアノテーションを使用してDIコンテナがインジェクションする(インスタンスを生成する必要がない)フィールドを指定するクラス(これもBean)を作成します。
package com.confrage.app;
import org.springframework.beans.factory.annotation.Autowired;
public class AutoWire {
@Autowired
AppendString appStr;
public void run(){
String str = appStr.append("test1", "test2");
System.out.println(str);
}
}
DIコンテナは以下のようにBeanを定義します。
package com.confrage;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.confrage.app.AppendString;
import com.confrage.app.AutoWire;
@Configuration
public class AppConfig {
@Bean
AppendString getMsg(){
return new AppendString();
}
@Bean
AutoWire frontend(){
return new AutoWire();
}
}
先ほど作成したBeanはfrontendメソッド内でインスタンスを生成してreturnします。
エントリポイントはAutoWireクラスのrunメソッドを実行するだけです。
package com.confrage;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Import;
import com.confrage.app.AutoWire;
@EnableAutoConfiguration
@Import(AppConfig.class)
public class SpringbootDiApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context =
SpringApplication.run(SpringbootDiApplication.class, args);
// Configで指定したオートワイヤリングのBean名にする
AutoWire getMsg = context.getBean(AutoWire.class);
getMsg.run();
}
}
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント