Лямбда-инъекционный сервис + дао - PullRequest
0 голосов
/ 25 мая 2018

У меня есть Amazon Lambda (springboot), которая развернута и работает нормально.

Я внедряю сервисы из внешних проектов (зависимость добавляется в pom) следующим образом:

@Bean
public SomeExternalService someExternalService() {
    return new SomeExternalService;
}

У меня естьчтобы сделать это, потому что при загрузке в Amazon @Autowired не работает.

Теперь из другого проекта Springboot (не лямбда) у меня есть этот сервис, который использует DAO.

Сервис

@Service
public class StateService  {

@Autowired
private StateRepository repository;

/**
 * Find all {@code State}
 */
public void findSomething(String thing) {
    return repository.findSomething("thing");
}
.....

Репозиторий

@EnableScan
public interface StateRepository extends PagingAndSortingRepository<State, String> {
    List<State> findSomething(String thing);

При сборке я получаю

Ошибка создания бина с именем 'StateService': неудовлетворительная зависимость выражена через поле 'хранилище'

и

org.springframework.beans.factory.NoSuchBeanDefinitionException: нет доступного квалифицирующего компонента типа 'mypackage.repository.StateRepository': ожидается, по крайней мере, 1 компонент, который квалифицируется как кандидат для автоматической передачи.

Я внедряю этот сервис точно так же, как другие

@Bean
public StateService stateService() {
    return new StateService;
}

Я не могу сделать то же самое для StateRepository.

1 Ответ

0 голосов
/ 25 мая 2018

Класс StateRepository должен иметь аннотацию @Component или добавить его в свой класс @Configuration как @ Bean.

@Configuration
@ComponentScan("com.company")
public class ConfigClass {
   // your @Bean's
   @Bean
   public StateRepository stateRepository() {
       return new StateRepository();
   }
   // now can @Autowired
}
...