Spring @Beanアノテーション

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

Spring @Beanの例

以下に示すように、次のような単純なクラスがあるとします。

package com.journaldev.spring;

public class MyDAOBean {

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

以下は、MyDAOBeanクラスの@Beanメソッドを定義した構成クラスです。

package com.journaldev.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コンテキストからMyDAOBeanBeanを取得できます。

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("com.journaldev.spring");
context.refresh();
		
//クラスによるBeanの取得
MyDAOBean myDAOBean = context.getBean(MyDAOBean.class);

Spring Beanの名前

@Bean名を指定し、それを使用してSpringコンテキストから取得できます。たとえば、次のようにMyFileSystemBeanクラスが定義されているとします:

package com.journaldev.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");

Spring @Bean initMethod および destroyMethod

Springビーンのinitメソッドとdestroyメソッドを指定することもできます。これらのメソッドは、Springビーンが作成されているときと、コンテキストが閉じられているときにそれぞれ呼び出されます。

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

「init」メソッドはコンテキストのrefreshメソッドを呼び出すときに呼び出され、
「destroy」メソッドはコンテキストのcloseメソッドを呼び出すときに呼び出されることに注意してください。

要約

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

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

Source:
https://www.digitalocean.com/community/tutorials/spring-bean-annotation