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コンテキストからMyDAOBean
Beanを取得できます。
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