Eine Bean ist ein POJO (Plain Old Java Object), das vom Spring Container verwaltet wird.
Spring-Container erstellen standardmäßig nur eine Instanz der Bean. Diese Bean wird im Speicher zwischengespeichert, sodass alle Anforderungen für die Bean einen gemeinsamen Verweis auf dieselbe Bean zurückgeben.
Die Annotation @Bean gibt ein Objekt zurück, das Spring im Anwendungskontext als Bean registriert. Die Logik innerhalb der Methode ist für die Erstellung der Instanz verantwortlich.
Wann verwenden wir die @ Bean-Annotation?
Wenn die automatische Konfiguration keine Option ist. Zum Beispiel, wenn wir Komponenten aus einer Bibliothek eines Drittanbieters verkabeln möchten, weil der Quellcode nicht verfügbar ist und wir die Klassen nicht mit @Component kommentieren können.
Ein Echtzeitszenario könnte sein, dass jemand eine Verbindung zum Amazon S3-Bucket herstellen möchte. Da die Quelle nicht verfügbar ist, müsste er eine @bean erstellen.
@Bean
public AmazonS3 awsS3Client() {
BasicAWSCredentials awsCreds = new BasicAWSCredentials(awsKeyId, accessKey);
return AmazonS3ClientBuilder.standard().withRegion(Regions.fromName(region))
.withCredentials(new AWSStaticCredentialsProvider(awsCreds)).build();
}
Quelle für den obigen Code -> https://www.devglan.com/spring-mvc/aws-s3-java
Weil ich oben @Component Annotation erwähnt habe.
@Component Gibt an, dass eine mit Anmerkungen versehene Klasse eine "Komponente" ist. Solche Klassen werden als Kandidaten für die automatische Erkennung angesehen, wenn annotationsbasierte Konfiguration und Klassenpfad-Scan verwendet werden.
Die Komponentenanmerkung registriert die Klasse als einzelne Bean.