Spring @Bean Annotation

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