親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。育児のイロハという育児サイト(https://ikujip.jp)の開発も行っているため、その開発で使用されている技術についても掲載しています。

Spring BootにおけるBeanクラスとは

JavaにおけるBean

まずはJavaにおけるBeanをご存知でしょうか。
BeanとはJavaBeansの略であり、インスタンス化して使用するクラスです。

変数のアクセス修飾子はprivateとし、その変数の値を変更したり、取得する際にはpublicなメソッドを使用します。
また、引き数なしのコンストラクタを持ちます。
いわゆるゲッター(getter)やセッター(setter)を保持するクラスですね。

JavaBeansを使うことについては賛否がありますが、
私自身はソースコードの共通化や可読性のためにも利用するのは好きですね。

Spring FrameworkにおけるBean

Spring Bootにおける使用方法の前に、Spring FrameworkにおけるBeanの使い方ですが、使用するBeanの定義をXMLファイルに宣言する必要があるのです。
以下のような感じで毎回。。。

<bean id="Beanの名前" class="パッケージ + クラス名">

詳細な設定方法については、ググればたくさん詳しいものが出てくると思うのでここでは割愛します。
とにかくインスタンス化したいクラスを作成するたびにXMLファイルを編集する必要があり、面倒くさいんですね。
Spring FrameworkXML地獄で面倒だという理由がよくわかります。

Spring BootでBeanの管理をもっと簡単に

そこで、Spring Bootです。
Spring Bootではアノテーション方式で設定が可能なのです。

まず、Beanインスタンス作成するためのメソッドの前に@Beanアノテーションを追加し、Beanインスタンスを返値として指定します。

また、そのメソッドを保持するクラスの前には@Configurationアノテーションをつけてください。
これで設定ファイル(XMLファイル)を使わずにBean設定をするクラスと認識させることができるのです。

package パッケージ;
 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class TestBeanConfig {
 
    @Bean
    public TestBeanClass testBean() {
        return new Beanクラス; // Beanインスタンスを返す
    }
 
}

ちなみに、@Component、@Service、@Repository、@Controllerをつけるクラスについては、このアノテーションをつけた時点でBeanとして登録されるため、@Beanを付与する必要はありません。

Spring Boot 2 プログラミング入門

Spring Boot 2 プログラミング入門