Loading...
Loading...
Dependency injection workflow for Spring Boot projects covering constructor-first patterns, optional collaborator handling, bean selection, and validation practices.
npx skill4agent add giuseppe-trisciuoglio/developer-kit spring-boot-dependency-injection@Service@Component@Repository@ServiceConnection./gradlew testmvn test./references/@Autowired@RequiredArgsConstructorfinalObjects.requireNonNull@Configuration@Bean./references/reference.md@Autowired(required = false)ObjectProvider<T>./references/examples.md#example-2-setter-injection-for-optional-dependencies@Primary@Qualifier./references/reference.md#conditional-bean-registration@WebMvcTest@DataJpaTest@SpringBootTest./references/reference.md#testing-with-dependency-injection@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository;
private final EmailService emailService;
public User register(UserRegistrationRequest request) {
User user = User.create(request.email(), request.name());
userRepository.save(user);
emailService.sendWelcome(user);
return user;
}
}new UserService(mockRepo, mockEmailService);@Service
public class ReportService {
private final ReportRepository reportRepository;
private CacheService cacheService = CacheService.noOp();
public ReportService(ReportRepository reportRepository) {
this.reportRepository = reportRepository;
}
@Autowired(required = false)
public void setCacheService(CacheService cacheService) {
this.cacheService = cacheService;
}
}CacheService.noOp()@Configuration
@Import(DatabaseConfig.class)
public class MessagingConfig {
@Bean
@ConditionalOnProperty(name = "feature.notifications.enabled", havingValue = "true")
public NotificationService emailNotificationService(JavaMailSender sender) {
return new EmailNotificationService(sender);
}
@Bean
@ConditionalOnMissingBean(NotificationService.class)
public NotificationService noopNotificationService() {
return NotificationService.noOp();
}
}@Import./references/examples.md@Autowirednull@Lazyspring-boot-crud-patternsspring-boot-rest-api-standardsunit-test-service-layer