@Autowired public AppServiceImpl(AppRepository appRepository) { this.appRepository = appRepository; }
@Autowired public setRepository(AppRepository appRepository) { this.appRepository = appRepository; }
Не рекомендуется. Трудно поддается модульному тестированию.
@Autowired private AppRepository appRepository;
Вводить только в том случае, если существует зависимость:
@Autowired(required=false) AppService appService; public void method() { if(appService != null) { ... } }
Использование Дополнительного:
@Autowired OptionalappService; public void method() { appService.ifPresent(s -> { ... }); }
Если имена компонентов не указаны, они генерируются автоматически. Если они указаны, они позволяют устранить неоднозначность, если несколько классов компонентов реализуют один и тот же интерфейс.
@Component public class AppServiceImpl implements AppService { @Autowired public AppServiceImpl(@Qualifier("jdbcRepository") AppRepository appRepository) { this.appRepository = appRepository; } } @Component("jdbcRepository") public class JdbcRepositoryImpl implements AppRepository { ... }
Оригинал: “https://dev.to/eidher/autowiring-in-spring-f89”