Fasola to POJO (Plain Old Java Object), który jest zarządzany przez kontener wiosenny.
Kontenery sprężynowe domyślnie tworzą tylko jedno wystąpienie fasoli. Ta fasola jest buforowana w pamięci, więc wszystkie żądania fasoli zwrócą wspólne odwołanie do tej samej fasoli.
Adnotacja @Bean zwraca obiekt, który sprężyna rejestruje jako komponent bean w kontekście aplikacji. Logika wewnątrz metody odpowiada za utworzenie instancji.
Kiedy używamy adnotacji @Bean?
Gdy automatyczna konfiguracja nie jest opcją. Na przykład, gdy chcemy połączyć komponenty z biblioteki innej firmy, ponieważ kod źródłowy jest niedostępny, więc nie możemy adnotować klas za pomocą @Component.
Scenariusz w czasie rzeczywistym może polegać na tym, że ktoś chce połączyć się z segmentem Amazon S3. Ponieważ źródło nie jest dostępne, musiałby utworzyć @bean.
@Bean
public AmazonS3 awsS3Client() {
BasicAWSCredentials awsCreds = new BasicAWSCredentials(awsKeyId, accessKey);
return AmazonS3ClientBuilder.standard().withRegion(Regions.fromName(region))
.withCredentials(new AWSStaticCredentialsProvider(awsCreds)).build();
}
Źródło powyższego kodu -> https://www.devglan.com/spring-mvc/aws-s3-java
Ponieważ wspomniałem o adnotacji @Component powyżej.
@Component Wskazuje, że klasa z adnotacjami jest „komponentem”. Takie klasy są uważane za kandydatów do automatycznego wykrywania w przypadku korzystania z konfiguracji opartej na adnotacjach i skanowania ścieżki klasy.
Adnotacja komponentu rejestruje klasę jako pojedynczą fasolę.