【发布时间】:2015-09-28 07:40:54
【问题描述】:
我正在使用 Spring Boot 和 Spring Data JPA。我想创建一个自定义存储库方法,如参考中所述。我需要在自定义方法中引用 EntityManager。当 CustomRepositoryImpl 类具有 @Autowired/@Inject 字段时,它可以正常工作。我想做的是使用 JavaConfig 配置这个 bean。这可能吗?到目前为止,我的尝试一直失败,这是我的代码:
public interface CustomerRepositoryCustom {
void resetAll();
}
public class CustomerRepositoryImpl implements CustomerRepositoryCustom {
// @Inject
private EntityManager em;
public CustomerRepositoryImpl(EntityManager em) {
this.em = em;
}
@Transactional
@Override
public void resetAll() {
// some code
}
}
在我的@SpringBootApplication 类中,根据定义它是一个@Configuration 类,我有一个像这样的@Bean 定义:
@Bean
public CustomerRepositoryCustom customerRepositoryCustom(EntityManager em) {
return new CustomerRepositoryImpl(em);
}
这不起作用,这个方法被完全忽略了,我得到以下异常:
Caused by: java.lang.NoSuchMethodException: test.CustomerRepositoryImpl.<init>()
即Spring Data 不查看@Bean 定义,它只是尝试使用不存在的默认构造函数创建自定义 repo bean。
是否可以指示 Spring Data 使用 @Bean 方法?
【问题讨论】:
标签: java spring-boot spring-data