Primavera @Bean A anotação é aplicada em um método para especificar que ele retorna um bean a ser gerenciado pelo contexto do Spring. A anotação Spring Bean geralmente é declarada em métodos de classes de configuração. Nesse caso, os métodos de bean podem fazer referência a outros métodos @Bean na mesma classe, chamando-os diretamente.
Exemplo de Spring @Bean
Vamos supor que tenhamos uma classe simples como a seguinte:
package com.journaldev.spring;
public class MyDAOBean {
@Override
public String toString() {
return "MyDAOBean"+this.hashCode();
}
}
Aqui está uma classe de configuração onde definimos um método @Bean para a classe MyDAOBean
.
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();
}
}
Podemos obter o bean MyDAOBean
do contexto do Spring usando o trecho de código abaixo.
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("com.journaldev.spring");
context.refresh();
// Obtendo Bean pela Classe
MyDAOBean myDAOBean = context.getBean(MyDAOBean.class);
Nome do Bean Spring
Podemos especificar o nome @Bean e usá-lo para obtê-lo do contexto do Spring. Suponha que tenhamos a classe MyFileSystemBean
definida como:
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");
}
}
Agora defina um método @Bean na classe de configuração:
@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"})
public MyFileSystemBean getMyFileSystemBean() {
return new MyFileSystemBean();
}
Podemos obter este bean do contexto usando o nome do bean.
MyFileSystemBean myFileSystemBean = (MyFileSystemBean) context.getBean("getMyFileSystemBean");
MyFileSystemBean myFileSystemBean1 = (MyFileSystemBean) context.getBean("MyFileSystemBean");
Spring @Bean initMethod e destroyMethod
Também podemos especificar o método de inicialização e destruição do bean do Spring. Esses métodos são chamados quando o bean do Spring está sendo criado e quando o contexto está sendo fechado, respectivamente.
@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"}, initMethod="init", destroyMethod="destroy")
public MyFileSystemBean getMyFileSystemBean() {
return new MyFileSystemBean();
}
Você vai notar que o método “init” é chamado quando invocamos o método refresh
do contexto e o método “destroy” é chamado quando invocamos o método close
do contexto.
Resumo
A anotação @Bean do Spring é amplamente utilizada em aplicações Spring orientadas a anotações.
Você pode baixar o projeto Spring completo em nosso Repositório do GitHub.
Source:
https://www.digitalocean.com/community/tutorials/spring-bean-annotation