Springの@Beanアノテーション

Springの@Beanアノテーションは、Springのコンテキストで管理されるBeanを返すことを指定するために、メソッドに適用されます。Spring Beanアノテーションは通常、設定クラスのメソッドで宣言されます。この場合、Beanのメソッドは、直接呼び出すことで同じクラス内の他の@Beanメソッドを参照することができます。

スプリングの@Beanの例

以下に示すような簡単なクラスを考えてみましょう。

package com.scdev.spring;

public class MyDAOBean {

	@Override
	public String toString() {
		return "MyDAOBean"+this.hashCode();
	}
}

ここには、MyDAOBeanクラスのための@Beanメソッドを定義したConfigurationクラスがあります。

package com.scdev.spring;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyAppConfiguration {

	@Bean
	public MyDAOBean getMyDAOBean() {
		return new MyDAOBean();
	}
}

以下のコードスニペットを使って、SpringコンテキストからMyDAOBeanのビーンを取得することができます。

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("com.scdev.spring");
context.refresh();
		
//Getting Bean by Class
MyDAOBean myDAOBean = context.getBean(MyDAOBean.class);

スプリングビーンの名前

@Beanアノテーションは、Springコンテキストから@Beanの名前を指定して取得することができます。例えば、MyFileSystemBeanクラスが定義されているとしましょう。

package com.scdev.spring;

public class MyFileSystemBean {

	@Override
	public String toString() {
		return "MyFileSystemBean"+this.hashCode();
	}
	
	public void init() {
		System.out.println("init method called");
	}
	
	public void destroy() {
		System.out.println("destroy method called");
	}
}

設定クラスで@Beanメソッドを定義してください。

@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"})
public MyFileSystemBean getMyFileSystemBean() {
	return new MyFileSystemBean();
}

私たちは、この豆をコンテキストから取得することができます。豆の名前を使用することで。

MyFileSystemBean myFileSystemBean = (MyFileSystemBean) context.getBean("getMyFileSystemBean");

MyFileSystemBean myFileSystemBean1 = (MyFileSystemBean) context.getBean("MyFileSystemBean");

初春の@BeanのinitMethodとdestroyMethod

私たちは、Springビーンの初期化メソッドと破棄メソッドを指定することもできます。これらのメソッドは、Springビーンが作成されるときに呼び出され、コンテキストが閉じられるときに呼び出されます。

@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"}, initMethod="init", destroyMethod="destroy")
public MyFileSystemBean getMyFileSystemBean() {
	return new MyFileSystemBean();
}

コンテキストのリフレッシュメソッドを呼び出すときには、「init」メソッドが呼び出されることに気づくでしょう。また、コンテキストのクローズメソッドを呼び出すときには、「destroy」メソッドが呼び出されます。

要約:まとめ

Springの`@Bean`アノテーションは、アノテーション駆動のSpringアプリケーションで広く使用されています。

弊社のGitHubリポジトリから、完全なSpringプロジェクトをダウンロードできます。

コメントを残す 0

Your email address will not be published. Required fields are marked *