Внедрение службы в Springboot AWS лямбда - PullRequest
0 голосов
/ 21 мая 2018

Я строю на основе лямбды на этом коде

Служба uppercaseService "вводится" следующим образом:

@Component("uppercaseFunction")
public class UppercaseFunction implements Function<UppercaseRequest, UppercaseResponse> {

private final UppercaseService uppercaseService;

public UppercaseFunction(final UppercaseService uppercaseService) {
    this.uppercaseService = uppercaseService;
}

Это работает нормально, пока я не попытаюсьвнедрить другой сервис внутри UppercaseService.

@Service
public class UppercaseService {

    @Autowired
    MyService myService;

    public String uppercase(final String input) {
        myService.doSomething();
        return input.toUpperCase(Locale.ENGLISH);
    }
}

Консоль AWS возвращает:

"errorMessage": "Ошибка создания компонента с именем uppercaseService: неудовлетворенная зависимость, выраженная через поле" myService "

Этот сервис работает в не-лямбда-контексте. Класс присутствует в .jar, собранном с помощью пакета maven.

Я попытался найти решение @ https://www.profit4cloud.nl/blog/just-spring-enabled-aws-lambdas, но безуспешно.

1 Ответ

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

Вы должны сначала инициализировать ваш MyService боб.Так как ваш MyService поступает из внешнего сервиса, который, скорее всего, будет иметь пакет, отличный от вашего собственного пакета

Либо напрямую:

@SpringBootApplication
public class UpperFunctionApplication {

    @Bean
    public MyService myService() {
       return new MyService(); // You must provide code to construct new MyService bean
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(UpperFunctionApplication.class, args);
    }
}

, либо через компонент может:

@SpringBootApplication(scanBasePackageClasses = {UpperFunctionApplication.class, MyService.class})
public class UpperFunctionApplication {

    @Bean
    public MyService myService() {
       return new MyService(); // You must provide code to construct new MyService bean
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(UpperFunctionApplication.class, args);
    }
}
...