
[英]No qualifying bean of type 'com.jpa.dao.UserRepository' available
[英]No qualifying bean of type 'com.example.repo.UserRepository' available
这是我第一次尝试使用 Spring MVC 尝试 Spring Data JPA,但我无法解决此错误。
错误日志
严重:异常将上下文初始化事件发送到类 org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“mainController”的 bean 时出错:通过字段“userRepository”表达的不满意依赖; 嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的“com.example.repo.UserRepository”类型的合格 bean:预计至少有 1 个 bean 有资格作为自动装配候选。 依赖注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)} 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588) 在 org.springframework. beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366) at org.springframework.supportCapableAbfactory.java:366) populateBean(AbstractAutowireCapableBeanFactory.java:1264) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createWireBean3:AbstractAutowireCapableBeanFactory.createWireBean4在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getO bject(AbstractBeanFactory.java:306) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(Abstract2BeanFactory.java:30)在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) 在 org.springframework.context.support .AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:44444) org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326) 在 org.springframework.web.context.Co ntextLoaderListener.contextInitialized(ContextLoaderListener.java:107) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4725) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5189) at org .apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) 在 org.apache.catalina.core.ContainerBase$StartChild .call(ContainerBase.java:1409) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent。 ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 引起:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型为 'com.example 的合格 bean。 repo.UserRepository' 可用:预计至少有 1 个 bean 有资格作为自动装配候选者。 依赖注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)} 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1486) 在 org.springframework.beans。 factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) at org.springframework.beans.beans.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) at org.springframework.beans.beans.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)。注入(AutowiredAnnotationBeanPostProcessor.java:585) ... 24 更多
用户存储库.java
@Repository
public interface UserRepository extends CrudRepository<User, Integer> {
}
主控制器.java
@Controller
@RequestMapping("/")
public class MainController {
@Autowired
private UserRepository userRepository;
@RequestMapping(value = "/user", method = RequestMethod.POST, headers = "Accept=application/json")
@ResponseBody
public ResponseEntity<User> addUser(@RequestBody User user) {
userRepository.save(user);
System.out.println("------>>>>>>>>>>" + user.getName());
HttpHeaders headers = new HttpHeaders();
return new ResponseEntity<User>(headers, HttpStatus.OK);
}
@RequestMapping(value = "/user/list", method = RequestMethod.GET)
public ResponseEntity<List<User>> listAllUsers() {
List<User> users = (List<User>)userRepository.findAll();
if (users.isEmpty()) {
System.out.println("List is empty oops..!!");
return new ResponseEntity<List<User>>(HttpStatus.NO_CONTENT);
}
System.out.println("Got the List...!!");
System.out.println("Name of First User---->>>>" + users.get(0).getName());
return new ResponseEntity<List<User>>(users, HttpStatus.OK);
}
}
应用程序配置文件
@Configuration
@ComponentScan("com.example")
@EnableWebMvc
@EnableJpaRepositories
@EnableTransactionManagement
public class AppConfig {
@Bean
public InternalResourceViewResolver viewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF");
resolver.setSuffix(".html");
return resolver;
}
@Bean
public DataSource dataSource(){
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/spring_database");
dataSource.setUsername("root");
dataSource.setPassword("");
return dataSource;
}
@Bean
public EntityManagerFactory entityManagerFactory(){
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setShowSql(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan(User.class.getPackage().getName());
factory.setDataSource(dataSource());
factory.afterPropertiesSet();
return factory.getObject();
}
@Bean
public PlatformTransactionManager transactionManager(){
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory());
return txManager;
}
}
用户.java
@Entity
@Table(name="user")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String name;
private String email;
/*Getters and Setters*/
这是我的项目结构
我在这里缺少什么? 或者我在这里有什么错误? 任何人都可以解决这个问题吗?
您需要告诉 spring 在哪里寻找存储库:
@EnableJpaRepositories(basePackageClasses = UserRepository.class)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.