当前位置: 首页 > 知识库问答 >
问题:

没有“com.example.repo.userrepository”类型的限定bean可用

夔波
2023-03-14

这是我第一次尝试使用Spring MVC使用Spring Data JPA,但我无法解决这个错误。

UserRepository.java

 @Repository
 public interface UserRepository extends CrudRepository<User, Integer> {

 }

MainController.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);
    }

}

AppConfig.java

@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;
    }

}
@Entity
@Table(name="user")
public class User {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;
    private String name;
    private String email;
    /*Getters and Setters*/

共有1个答案

左丘昕
2023-03-14

您需要告诉spring在哪里寻找存储库:

@enablejparepositories(basePackageClasses=userRepository.class)

 类似资料:
  • 我在调用get请求(modes-calcul)时遇到这个错误,我不明白为什么...我的依赖注入是正确的吗? ModeCalculController: 谢谢你的帮助..

  • 我按照教程创建批处理作业https://spring.io/guides/gs/batch-processing/,如果我从MainClass运行应用程序,则程序正在运行。 但是,当我使用运行相同的代码时,我会得到关于未找到DataSource的错误。我的pom文件是 https://maven.apache.org/xsd/maven-4.0.0.xsd“>4.0.0 org.springfra

  • 我有一个可以从应用程序中启用/禁用的组件。我的spring boot应用程序中的属性。。 在我的应用程序中。我拥有的财产 在组件中看起来像这样 最后,在我使用wikiclient的另一个类中,我在我的构造函数中像这样自动安装了它。 但我还是有例外 如果启用该属性,它的工作方式与启用该组件类似。

  • 在package-data.dao中有一个bean 完整StackTrace: 编辑:问题解决了:我只是删除了“@transactional”,它可以工作了。我还重构了一点我的问题,这样它就实现了Peter Jurkovic建议的接口。

  • 你知道为什么我会犯这个错误吗?我是Spring的新手,冬眠的,junit的。总之,我认为我应该这样做。或者我该怎么做这个测试类? 我在某处读到导致问题的原因是extends AbstractTransactionalJUnit4SpringContextTest,如果没有它,我就不会再出现这个错误了。