gpt4 book ai didi

java - Spring 启动: Consider defining a bean named 'entityManagerFactory' in your configuration

转载 作者:行者123 更新时间:2023-11-30 05:58:19 55 4
gpt4 key购买 nike

我在尝试启动 Spring Boot 应用程序时收到以下错误:

注意:仅当我输入 @Autowired 时才会出现此错误IDeviceRepository iDeviceRepository; 上的注释在 DeviceDao.java

我还没有得到 DeviceDao.java保存到数据库 - 但正在创建实体

> *************************** 
> APPLICATION FAILED TO START
> ***************************
>
> Description:
> Field iDeviceRepository in com.abc.dao.DeviceDao required a bean named 'entityManagerFactory' that could not be found.
> Action:
> Consider defining a bean named 'entityManagerFactory' in your configuration.

这是项目的目录结构:

├───src
│ ├───main
│ │ ├───java
│ │ │ └───com
│ │ │ └───abc
│ │ │ ├───controller
│ │ │ ├───dao
│ │ │ │ └───repositories
│ │ │ ├───init
│ │ │ ├───model
│ │ │ ├───service
│ │ │ └───util
│ │ │ ├───common
│ │ │ ├───enums
│ │ │ ├───exceptions
│ │ │ └───interfaces
│ │ └───resources
│ │ ├───static
│ │ │ ├───css
│ │ │ ├───fonts
│ │ │ ├───img
│ │ │ └───js
│ │ └───templates

com.abc.init.Application.java

package com.abc.init;

@SpringBootApplication
@EnableJpaRepositories("com.abc.dao.repositories")
@EntityScan(basePackages = { "com.abc.model" })
@ComponentScan(basePackages={ "com.abc.controller", "com.abc.service", "com.abc.dao" })
public class Application
{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

com.abc.controller.RegisterController.java

package com.abc.controller;

@Controller
public class RegisterController
{
@Autowired
RegisterServiceImpl registerService;

@GetMapping("/register")
public String registerForm(Model model) {
model.addAttribute("device", new Device());
return "registerDevice";
}

@PostMapping("/register")
public String registerSubmit(@ModelAttribute Device device) {
registerService.registerDevice(device)
return "registerDeviceSuccess";
}
}

com.abc.service.RegisterServiceImpl.java

package com.abc.service;

@Service
public class RegisterServiceImpl implements IRegisterService
{
@Autowired
DeviceDao devDao;

public boolean registerDevice (Device device) {
devDao.saveDevice(device);
return true;
}
}

com.abc.util.interfaces.IRegisterService

package com.abc.util.interfaces;

public interface IRegisterService
{
public boolean registerDevice(Device device);
}

com.abc.dao.DeviceDao.java

package com.abc.dao;

@Repository
public class DeviceDao
{
@Autowired
IDeviceRepository iDeviceRepository;

public Device saveDevice(Device device) {
return iDeviceRepository.save(device);
}
}

com.abc.dao.repositories.IDeviceRepository.java

package com.abc.dao.repositories;

@Repository
public interface IDeviceRepository extends CrudRepository<Device, Long> {}

application.properties

# Exposed HTTP Port
server.port = 8090

# Database Configuration Parameters
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=mydbadmin
spring.datasource.password=mydbpassword
spring.datasource.driver-class-name=org.postgresql.Driver

# Hibernate Configurations
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false

# Display SQL Commands in Terminal
spring.jpa.show-sql=true

堆栈跟踪:

java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'registerController': Unsatisfied dependency expressed through field 'registerService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'registerServiceImpl': Unsatisfied dependency expressed through field 'devDao'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'deviceDao': Unsatisfied dependency expressed through field 'iDeviceRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'IDeviceRepository': Cannot create inner bean '(inner bean)#36dce7ed' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#36dce7ed': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'registerServiceImpl': Unsatisfied dependency expressed through field 'devDao'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'deviceDao': Unsatisfied dependency expressed through field 'iDeviceRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'IDeviceRepository': Cannot create inner bean '(inner bean)#36dce7ed' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#36dce7ed': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'deviceDao': Unsatisfied dependency expressed through field 'iDeviceRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'IDeviceRepository': Cannot create inner bean '(inner bean)#36dce7ed' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#36dce7ed': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'IDeviceRepository': Cannot create inner bean '(inner bean)#36dce7ed' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#36dce7ed': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#36dce7ed': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available

谁能给点建议吗?

最佳答案

在spring-boot中,你不需要用repository注解来注解你的repository类。

@Repository

您只需在界面上扩展 JPARepository,Spring-boot 就会处理剩下的事情。例如:

public interface YourRepository extends JpaRepository<YourDomain, Serializable> {

YourDomain findBysomeparameter(Long parameter);

}

并且您不需要添加这些注释:

@EnableJpaRepositories
@EntityScan
@ComponentScan

Spring-boot 会自动执行此操作,除非您正在执行某些配置。

我希望这会有所帮助。

关于java - Spring 启动: Consider defining a bean named 'entityManagerFactory' in your configuration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52759759/

55 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com