Технически —
Разница
→ @Component —
→ @Service —
→ @Repository —
@Repository имеет дополнительную функцию:
Использование правильной аннотации улучшает читаемость и показывает роль класса в архитектуре.
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥9❤1👏1
@Conditional позволяет регистрировать бин только при
@Bean
@Conditional(WindowsCondition.class)
public Service windowsService() {
return new WindowsService();
}
class WindowsCondition implements Condition {
public boolean matches(ConditionContext context,
AnnotatedTypeMetadata metadata) {
return System.getProperty("os.name")
.contains("Windows");
}
}
Spring Boot предоставляет готовые: @ConditionalOnProperty, @ConditionalOnClass, @ConditionalOnMissingBean.
Мощный инструмент для гибкой конфигурации под разные окружения.
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3❤1👏1
@Qualifier используется для
Без @Qualifier Spring не знает,
@Bean
@Qualifier("primary")
public DataSource primaryDB() { ... }
@Bean
@Qualifier("secondary")
public DataSource secondaryDB() { ... }
@Autowired
@Qualifier("primary")
private DataSource dataSource;
Альтернатива — использовать
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4👏2
readOnly = true — это
Что происходит:
—
—
—
Важно: это
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2❤1👏1
Propagation определяет, как транзакция
Основные типы
— REQUIRED (default):
— REQUIRES_NEW:
— MANDATORY:
— NEVER:
— SUPPORTS:
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥1👏1
@RestController — это
Без @RestController пришлось бы
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1🔥1👏1
@Autowired — это аннотация Spring Framework для автоматического внедрения зависимостей. Она может применяться к конструкторам, сеттерам, полям и методам.
Начиная с Spring 4.3, если у класса один конструктор, @Autowired можно
Порядок разрешения зависимостей:
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1🔥1👏1
@Cacheable
Требует
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥2👏1
Actuator предоставляет production-ready функции для
Эндпоинты:
→
→
→
→
Можно создавать кастомные эндпоинты. Важно: закрывайте чувствительные эндпоинты в production через Spring Security.
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👏2❤1🔥1
Spring Data JPA — это
Вместо написания DAO вручную, создаёте интерфейс, и Spring генерирует реализацию.
Поддерживает:
—
—
—
—
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👏2❤🔥1❤1🔥1
▪️ @Component вешается над
▪️ @Bean ставится над
@Bean полезен, когда:
—
—
Оба способа регистрируют бин в
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1👏1
Spring Bean Scope определяет
Основные виды:
▪️
▪️ prototype —
▪️
▪️ session —
▪️
▪️ websocket —
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1🔥1