使用带有 Spring Boot 2 的实体管理器时

我正在将我的代码从 spring boot 1.5.4 迁移到 2.0.8。这样做时,实体管理器在 jboss 上部署时会引发错误:

将 @Autowired 用于 EntityManager 时:

No qualifying bean of type 'javax.persistence.EntityManager'

并且在使用@PersistenceContext 时:

No qualifying bean of type 'javax.persistence.EntityManagerFactory'

我观察到的是,当我使用嵌入的 infinispan 的 uber jar 时,这个问题不会出现在 jboss 上。我不想使用 uber jar,因为它会带来其他问题。


繁华开满天机
浏览 82回答 1
1回答

森栏

由于您使用的是入门模块,因此无需显式导入其他依赖项。所以删除:infinispan-spring4-embedded比我看到你明确导入 Spring Security。为什么不只使用启动模块?<dependency>&nbsp; &nbsp; <groupId>org.springframework.boot</groupId>&nbsp; &nbsp; <artifactId>spring-boot-starter-security</artifactId></dependency>消除<dependency>&nbsp; &nbsp; <groupId>org.springframework.security</groupId>&nbsp; &nbsp; <artifactId>spring-security-core</artifactId>&nbsp; &nbsp; <version>4.2.7.RELEASE</version></dependency><dependency>&nbsp; &nbsp; <groupId>org.springframework.security</groupId>&nbsp; &nbsp; <artifactId>spring-security-config</artifactId>&nbsp; &nbsp; <version>4.2.4.RELEASE</version></dependency><dependency>&nbsp; &nbsp; <groupId>org.springframework.security</groupId>&nbsp; &nbsp; <artifactId>spring-security-web</artifactId>&nbsp; &nbsp; <version>4.2.7.RELEASE</version></dependency>关于Infinispan JCache,我发现 Spring 已经支持JSR-107缓存注释(博客文章)。我认为根本不需要 CDI。所以继续删除<dependency>&nbsp; &nbsp; <groupId>org.infinispan</groupId>&nbsp; &nbsp; <artifactId>infinispan-jcache</artifactId></dependency><dependency>&nbsp; &nbsp; <groupId>org.infinispan</groupId>&nbsp; &nbsp; <artifactId>infinispan-cdi-embedded</artifactId>&nbsp; &nbsp; &nbsp;<version>9.4.6.Final</version></dependency>&nbsp;您还可以删除显式 Hibernate 导入<dependency>&nbsp; &nbsp; <groupId>org.hibernate</groupId>&nbsp; &nbsp; <artifactId>hibernate-core</artifactId>&nbsp; &nbsp; <version>5.2.17.Final</version>&nbsp; &nbsp; <scope>provided</scope></dependency>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java