Java Spring 引导:考虑在您的配置中定义一个名为 'entityManagerFactory' 的 bean
Java Spring Boot: Consider defining a bean named 'entityManagerFactory' in your configuration
我正在使用 Java Spring Boot 开发一个基本应用程序,我遇到了这个错误:
这是错误信息:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-12-16 12:44:40.321 ERROR 5698 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Field userRepository in com.htamayo.sbcrashcourse.SbcrashcourseApplication required a bean named 'entityManagerFactory' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean named 'entityManagerFactory' in your configuration.
我的主要 class 看起来像这样:
package com.htamayo.sbcrashcourse;
import com.htamayo.sbcrashcourse.lendingengine.domain.model.User;
import com.htamayo.sbcrashcourse.lendingengine.domain.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@SpringBootApplication
@ComponentScan(basePackages = {"com.htamayo.sbcrashcourse.lendingengine"})
@EnableJpaRepositories("com.htamayo.sbcrashcourse.lendingengine.domain.repository")
public class SbcrashcourseApplication implements CommandLineRunner {
@Autowired
private UserRepository userRepository;
public static void main(String[] args) {SpringApplication.run(SbcrashcourseApplication.class, args);}
@Override
public void run(String... args) throws Exception {
userRepository.save(new User(1, "John", "B", 27, "Software Developer"));
userRepository.save(new User(2, "Peter", "C", 21, "Pilot"));
userRepository.save(new User(3, "Henry", "E", 21, "Unemployed"));
}
}
UserRepository class是这个:
package com.htamayo.sbcrashcourse.lendingengine.domain.repository;
import com.htamayo.sbcrashcourse.lendingengine.domain.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}
我的 pom.xml 看起来像这样:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.32.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.9</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.5.7.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.5.7.Final</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
org.springframework.boot
spring-boot-maven-插件
我一直在 Google 上寻找解决方案,但到目前为止一无所获,所以我的问题是:我不明白如何克服 EntityManagerFactory 错误,我是否缺少依赖项?还是应该重构我的代码?有什么解决办法吗?
非常感谢您的建议。
好吧,17天后我终于得到了解决方案:
我的问题出在属性文件上,出于某种原因我使用了这一行(我不记得为什么):
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
我刚刚评论了它,问题就解决了。
经验教训:
- 始终记录您的代码
- JitterTed 的 discord 是一个很好的答案来源。
我正在使用 Java Spring Boot 开发一个基本应用程序,我遇到了这个错误:
这是错误信息:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-12-16 12:44:40.321 ERROR 5698 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Field userRepository in com.htamayo.sbcrashcourse.SbcrashcourseApplication required a bean named 'entityManagerFactory' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean named 'entityManagerFactory' in your configuration.
我的主要 class 看起来像这样:
package com.htamayo.sbcrashcourse; import com.htamayo.sbcrashcourse.lendingengine.domain.model.User; import com.htamayo.sbcrashcourse.lendingengine.domain.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @SpringBootApplication @ComponentScan(basePackages = {"com.htamayo.sbcrashcourse.lendingengine"}) @EnableJpaRepositories("com.htamayo.sbcrashcourse.lendingengine.domain.repository") public class SbcrashcourseApplication implements CommandLineRunner { @Autowired private UserRepository userRepository; public static void main(String[] args) {SpringApplication.run(SbcrashcourseApplication.class, args);} @Override public void run(String... args) throws Exception { userRepository.save(new User(1, "John", "B", 27, "Software Developer")); userRepository.save(new User(2, "Peter", "C", 21, "Pilot")); userRepository.save(new User(3, "Henry", "E", 21, "Unemployed")); }
}
UserRepository class是这个:
package com.htamayo.sbcrashcourse.lendingengine.domain.repository; import com.htamayo.sbcrashcourse.lendingengine.domain.model.User; import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long> { }
我的 pom.xml 看起来像这样:
org.springframework.boot spring-boot-maven-插件<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.4.32.Final</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.9</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.9</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.5.7.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.5.7.Final</version> </dependency> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency>
我一直在 Google 上寻找解决方案,但到目前为止一无所获,所以我的问题是:我不明白如何克服 EntityManagerFactory 错误,我是否缺少依赖项?还是应该重构我的代码?有什么解决办法吗?
非常感谢您的建议。
好吧,17天后我终于得到了解决方案:
我的问题出在属性文件上,出于某种原因我使用了这一行(我不记得为什么): spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
我刚刚评论了它,问题就解决了。
经验教训:
- 始终记录您的代码
- JitterTed 的 discord 是一个很好的答案来源。