【发布时间】:2018-11-04 22:01:37
【问题描述】:
我有一个已部署且运行良好的 Amazon Lambda (springboot)。
我以这种方式从外部项目注入服务(依赖添加到 pom):
@Bean
public SomeExternalService someExternalService() {
return new SomeExternalService;
}
我必须这样做,因为当上传到亚马逊时,@Autowired 不起作用。
现在,从另一个 springboot 项目(不是 lambda)我有这个使用 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”的 bean 时出错:不满足的依赖关系 通过字段'repository'表达
和
org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 'mypackage.repository.StateRepository' 类型的限定 bean 可用:预计至少有 1 个符合 autowire 条件的 bean 候选人。
我像其他人一样注入该服务
@Bean
public StateService stateService() {
return new StateService;
}
我不能为StateRepository 做同样的事情。
【问题讨论】:
-
如果你使用
@Autowired,这意味着Spring已经定义了你正在注入的bean。在您的情况下,我不确定 Spring 是否知道StateRepository并且此存储库不在上下文中。您是否尝试使用@Bean创建存储库?
标签: java spring spring-boot dependency-injection aws-lambda