Un Bean est un POJO (Plain Old Java Object), qui est géré par le conteneur à ressort.
Les conteneurs Spring ne créent qu'une seule instance du bean par défaut. Ce bean est mis en cache en mémoire, donc toutes les requêtes pour le bean renverront une référence partagée au même bean.
L'annotation @Bean renvoie un objet que spring enregistre en tant que bean dans le contexte de l'application. La logique à l'intérieur de la méthode est responsable de la création de l'instance.
Quand utilisons-nous l'annotation @Bean?
Lorsque la configuration automatique n'est pas une option. Par exemple, lorsque nous voulons câbler des composants à partir d'une bibliothèque tierce, car le code source n'est pas disponible, nous ne pouvons donc pas annoter les classes avec @Component.
Un scénario en temps réel pourrait être que quelqu'un souhaite se connecter au compartiment Amazon S3. Parce que la source n'est pas disponible, il devrait créer un @bean.
@Bean
public AmazonS3 awsS3Client() {
BasicAWSCredentials awsCreds = new BasicAWSCredentials(awsKeyId, accessKey);
return AmazonS3ClientBuilder.standard().withRegion(Regions.fromName(region))
.withCredentials(new AWSStaticCredentialsProvider(awsCreds)).build();
}
Source pour le code ci-dessus -> https://www.devglan.com/spring-mvc/aws-s3-java
Parce que j'ai mentionné @Component Annotation ci-dessus.
@Component Indique qu'une classe annotée est un "composant". Ces classes sont considérées comme des candidats à la détection automatique lors de l'utilisation de la configuration basée sur des annotations et de l'analyse du chemin de classe.
L'annotation de composant enregistre la classe comme un bean unique.