Рубрики
Без рубрики

Автоматическая проводка весной

Инъекция конструктора @Автоматически подключенный общедоступный AppServiceImpl(apprepository appreposito… Помечен как spring, java, автозаполнение, квалификатор.

    @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
    Optional appService;

    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”