Bean - це POJO (Plain Old Java Object), яким керує весняний контейнер.
Весняні контейнери створюють лише один екземпляр квасолі за замовчуванням. Цей боб він зберігається в пам'яті, тому всі запити для файлу повертаються спільним посиланням на той самий.
Анотація @Bean повертає об'єкт, який весна реєструється як боб у контексті програми. Логіка всередині методу відповідає за створення екземпляра.
Коли ми використовуємо анотацію @Bean?
Коли автоматична конфігурація не є можливою. Наприклад, коли ми хочемо з'єднати компоненти з третьої сторони бібліотеки, оскільки вихідний код недоступний, тому ми не можемо коментувати класи за допомогою @Component.
Сценарій реального часу може бути таким, що хтось хоче підключитися до відра Amazon S3. Оскільки джерело недоступне, йому доведеться створити @bean.
@Bean
public AmazonS3 awsS3Client() {
BasicAWSCredentials awsCreds = new BasicAWSCredentials(awsKeyId, accessKey);
return AmazonS3ClientBuilder.standard().withRegion(Regions.fromName(region))
.withCredentials(new AWSStaticCredentialsProvider(awsCreds)).build();
}
Джерело для коду вище -> https://www.devglan.com/spring-mvc/aws-s3-java
Тому що я згадував @Acomponent Annotation вище.
@Component Вказує, що анотований клас - це "компонент". Такі класи розглядаються як кандидати для автоматичного виявлення при використанні конфігурації на основі анотацій та сканування контуру класу.
Анотація компонентів реєструє клас як єдиний квасоля.