Spring @Bean-annotatie wordt toegepast op een methode om aan te geven dat deze een bean retourneert die beheerd moet worden door de Spring-context. De Spring Bean-annotatie wordt meestal gedeclareerd in methoden van configuratieklassen. In dit geval kunnen bean-methoden andere @Bean-methoden in dezelfde klasse refereren door ze rechtstreeks aan te roepen.
Spring @Bean-voorbeeld
Laten we zeggen dat we een eenvoudige klasse hebben zoals hieronder.
package com.journaldev.spring;
public class MyDAOBean {
@Override
public String toString() {
return "MyDAOBean"+this.hashCode();
}
}
Hier is een configuratieklasse waarin we een @Bean-methode hebben gedefinieerd voor de klasse 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();
}
}
We kunnen de MyDAOBean
-bean uit de Spring-context halen met behulp van de onderstaande code.
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("com.journaldev.spring");
context.refresh();
// Bean verkrijgen op basis van klasse
MyDAOBean myDAOBean = context.getBean(MyDAOBean.class);
Spring Bean-naam
We kunnen de @Bean-naam specificeren en deze gebruiken om ze uit de Spring-context te halen. Laten we zeggen dat we de klasse MyFileSystemBean
hebben gedefinieerd als:
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");
}
}
Definieer nu een @Bean-methode in de configuratieklasse:
@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"})
public MyFileSystemBean getMyFileSystemBean() {
return new MyFileSystemBean();
}
We kunnen deze boon uit de context halen door de boon-naam te gebruiken.
MyFileSystemBean myFileSystemBean = (MyFileSystemBean) context.getBean("getMyFileSystemBean");
MyFileSystemBean myFileSystemBean1 = (MyFileSystemBean) context.getBean("MyFileSystemBean");
Spring @Bean initMethod en destroyMethod
We kunnen ook de init-methode en destroy-methode van de Spring boon specificeren. Deze methoden worden respectievelijk aangeroepen wanneer de Spring boon wordt gemaakt en wanneer de context wordt afgesloten.
@Bean(name= {"getMyFileSystemBean","MyFileSystemBean"}, initMethod="init", destroyMethod="destroy")
public MyFileSystemBean getMyFileSystemBean() {
return new MyFileSystemBean();
}
Je zult merken dat de “init”-methode wordt aangeroepen wanneer we de context refresh
-methode aanroepen en de “destroy”-methode wordt aangeroepen wanneer we de context close
-methode aanroepen.
Samenvatting
De Spring @Bean-annotatie wordt veel gebruikt in op annotaties gebaseerde Spring-toepassingen.
Je kunt het volledige Spring-project downloaden vanuit onze GitHub Repository.
Source:
https://www.digitalocean.com/community/tutorials/spring-bean-annotation