关于Spring Data JPA继承了JpaRepository却不能自动注入的问题

当当。。。。
这两天遇到了一些学习SpringBoot相关知识的问题,做一个记录。

在学习Spring Data JPA的时候,因为还是在学习中,所以现在只是记录其中已经遇到的一个问题。
Spring Data JPA 全称是Spring Data Java Persistent API,嘿嘿。。概念性的东西,大家百度就行,其他的小伙伴已经介绍的很详细了。
这次遇到的问题是SpringBoot不能自动注册Repository 的问题,因为我是继承了JpaRepository这个接口的,所以SpringBoot会自动注册,但是,并没有出现预期的效果呢!
搜索了很多资料,看到很多小伙伴的分享,终于有一个小伙伴的文章帮助了我,虽然我找不到他的链接了,但是他永远活在我的心里。
他的文章是关于SpringBoot为什么不能自动注入的方案,很简单,就是因为启动类跟其他要被扫描的包不是同级目录,所以导致没扫描到类,正确的结构,如下图所示:
在这里插入图片描述
调整目录结构后,我的项目是可以正常启动了,但是又遇到一个问题,
Circular view path [sort]: would dispatch back to the current
handler URL [/sort] again. Check your ViewResolver setup!
因为我访问的是/sort,报了这个找不到的问题,这位仁兄https://blog.csdn.net/qq_45811072/article/details/109585027
又给我指了条明路,是因为Controller的注解不正确,我用的是@Controller,这个注解声明了这个类是一个控制类,可以进行跳转,但是需要view model 的配合,换言之,controller就是返回一个后台需要做对应处理的对象的名称,是MVC中的Controller;完美的方案是使用@RestController,相当于@ResponseBody + @Controller合在一起,返回的应该是一个对象,即return一个member对象,这时,在没有页面的情况下,也能看到返回的是一个member对象对应的json字符串,而前端的作用是利用返回的json进行解析渲染页面。大家可以参考下图:
在这里插入图片描述
我的启动类什么都不用添加,如下图所示:
在这里插入图片描述

实现JpaRepository如下图:
在这里插入图片描述

这样就成功运行出来了。
在这里插入图片描述

希望可以帮助到大家,也欢迎大家批评指正,共同进步!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
您好,感谢您的提问。创建一个 Spring Data JPARepository 接口非常简单,只需要按照以下步骤操作即可: 1. 创建一个继承自 `JpaRepository` 的接口,指定实体类和主键类型: ``` public interface UserRepository extends JpaRepository<User, Long> { } ``` 其中,`User` 是您的实体类,`Long` 是实体类的主键类型。`JpaRepository` 是 Spring Data JPA 提供的一个基础 Repository 接口,提供了一些基本的数据操作方法,如插入、删除、更新、查询等。 2. 在您的实体类上添加注解,指定表名和主键: ``` @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String password; // 省略 getter 和 setter 方法 } ``` 在上述代码中,`@Entity` 注解表示该类是一个 JPA 实体类,`@Table(name = "user")` 指定该实体类对应的数据库表名为 `user`,`@Id` 和 `@GeneratedValue` 注解指定实体类的主键。 3. 在您的 Spring Boot 应用程序中,使用 `@EnableJpaRepositories` 注解启用 Spring Data JPA,并指定 Repository 接口的包路径: ``` @SpringBootApplication @EnableJpaRepositories(basePackages = "com.example.repository") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 在上述代码中,`@EnableJpaRepositories` 注解用于启用 Spring Data JPA,`basePackages` 属性指定 Repository 接口的包路径。 4. 在您的服务层或控制器中注入 Repository 接口,即可使用 Spring Data JPA 提供的基本数据操作方法: ``` @RestController public class UserController { @Autowired private UserRepository userRepository; @GetMapping("/users") public List<User> getAllUsers() { return userRepository.findAll(); } } ``` 在上述代码中,`@Autowired` 注解用于自动注入 `UserRepository` 对象,然后在 `getAllUsers` 方法中调用 `findAll` 方法获取所有用户信息。 通过上述步骤创建一个 Spring Data JPARepository 接口非常简单,希望能够帮助到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值