Java Spring数据JPA返回空存储库
在使用Spring Boot和Spring Data JPA时,当Java Spring数据JPA返回空存储库,java,spring,spring-boot,spring-data-jpa,Java,Spring,Spring Boot,Spring Data Jpa,在使用Spring Boot和Spring Data JPA时,当@Autowiring时,我会得到空存储库 我可能错过了一些简单的配置,但经过数小时的查看和审阅文档后,我没有发现任何缺陷。我需要她的一双眼睛来重新审视 以下是相关配置: @SpringBootApplication @EnableJpaRepositories @EnableTransactionManagement public class ServerApp { public static void main(Strin
@Autowiring
时,我会得到空存储库
我可能错过了一些简单的配置,但经过数小时的查看和审阅文档后,我没有发现任何缺陷。我需要她的一双眼睛来重新审视
以下是相关配置:
@SpringBootApplication
@EnableJpaRepositories
@EnableTransactionManagement
public class ServerApp {
public static void main(String[] args) {
SpringApplication.run(ServerApp.class, args);
}
}
使用存储库的服务。执行doSomething()
时,repository
为空
@Service
@Slf4j
public class MyService{
@Autowired
private MyRepository repository;
@Override
public AnEntity doSomething(String index) {
return repository.findOneByIndex(index);
}
}
存储库
public interface MyRepository extends JpaRepository<AnEntity, String> {
AnEntity findOneByIndex(String index);
}
persistence.xml文件
org.hibernate.jpa.HibernatePersistenceProvider
com.myapp.AnEntity
POM
4.0.0
com.myapp
myapp
1.0-快照
聚甲醛
1.8
org.springframework.boot
spring启动程序父级
1.2.7.发布
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧靴起动器执行器
org.springframework.plugin
spring插件核心
1.2.0.1发布
org.springframework.boot
spring引导启动器数据jpa
org.postgresql
postgresql
9.4-1201-jdbc41
net.logstash.logback
logstash logback编码器
4.5.1
org.projectlombok
龙目
1.16.6
假如
朱尼特
朱尼特
4.12
测试
org.springframework.boot
弹簧起动试验
测试
com.jayway.jsonpath
json路径
2.0.0
测试
br.com.six2six
夹具厂
3.0.0
log4j
log4j
最终,我在代码中出现了一个错误,该代码使用new
而不是依赖Spring的CDI显式实例化了服务。因此,Spring没有处理服务中存储库的@Autowire in
错
对
最终,我在代码中出现了一个错误,该代码使用
new
,而不是依赖Spring的CDI显式实例化了服务。因此,Spring没有处理服务中存储库的@Autowire in
错
对
按如下方式更改MyRepository类:
public interface MyRepository extends JpaRepository<AnEntity, Long> {
public AnEntity findOneByData(String data);
public AnEntity findOneByIndex(String index);
}
公共接口MyRepository扩展了JpaRepository{
公共实体findOneByData(字符串数据);
公共实体findOneByIndex(字符串索引);
}
按如下方式更改MyRepository类:
public interface MyRepository extends JpaRepository<AnEntity, Long> {
public AnEntity findOneByData(String data);
public AnEntity findOneByIndex(String index);
}
公共接口MyRepository扩展了JpaRepository{
公共实体findOneByData(字符串数据);
公共实体findOneByIndex(字符串索引);
}
认为您错过了@Repository注释发布您使用的整个类MyService
。请添加您的bean配置-我不确定您使用的是Java配置还是XML,或者什么…@Jens:about@Repository
在最新的Spring版本中不再需要,如文档所示。这里的索引是什么。我在实体类中没有看到此字段。我认为您错过了@Repository注释发布您正在使用MyService
的整个类。请添加您的bean配置-我不确定您是在使用Java配置还是XML或其他什么…@Jens:about@Repository
在最新的Spring版本中不再需要,如中所示文档。这里的索引是什么。我在实体类中看不到这个字段,实际上没有必要显式地显示要扫描的基本包。默认情况下,注释从其包开始,并在包树中向上扫描(朝向叶子)。如果找到存储库,Spring会抛出一个错误,指出无法连接的未满足的依赖项。当应用程序启动时,情况并非如此。实际上不需要显式地扫描要扫描的基本包。默认情况下,注释从其包开始,并在包树中向上扫描(朝向叶子)。如果找到存储库,Spring会抛出一个错误,指出无法连接的未满足的依赖项。当应用程序启动时,情况并非如此。
//Spring CDI takes charge and autowires the Service and it's dependencies
@Autowired
private MyService myService;
public void someMethod(){
setService(myService);
}
public interface MyRepository extends JpaRepository<AnEntity, Long> {
public AnEntity findOneByData(String data);
public AnEntity findOneByIndex(String index);
}