DIコンテナにBeanを自動登録する

BeanをDIコンテナ(JavaConfig)に記述していましたが、@ComponentScanアノテーションを使用するとエントリポイントのパッケージ配下のBeanを自動でDIに登録してくれます。

この時、Beanクラスには@Componentアノテーションを指定しておく必要があります。

これによりJavaConfigのクラスは不要になります。エントリポイントの@Importアノテーションも不要です。

次にrunメソッドを実装していたBeanもエントリポイントのクラスにCommandLineRunnerインタフェースを実装することにより不要にすることができます。

CommandLineRunnerインタフェースはrunメソッドを実装する必要があります。

まず、文字列連結しているだけのAppendStringクラスです。

以下、ソースです。

package com.confrage.app;

public class AppendString {
  public String append(String a,String b){
    return a + b;
  }
}

次にエントリポイントのクラスです。

package com.confrage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

import com.confrage.app.AppendString;

@EnableAutoConfiguration
@ComponentScan
public class SpringbootDiApplication implements CommandLineRunner{
  @Autowired
  AppendString appStr;
  public static void main(String[] args) {
    SpringApplication.run(SpringbootDiApplication.class, args);
  }

  @Override
  public void run(String... strs){
    String str = appStr.append("test1", "test2");
    System.out.println(str);
  }
}
スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA