首页 > 其他分享 >Spring @Repository 注解

Spring @Repository 注解

时间:2022-08-27 22:59:34浏览次数:76  
标签:Repository Service Spring 数据库 注解 异常

Spring 的项目严重依赖注解。

@Repository 注解

在Spring2.0之前的版本中,@Repository注解可以标记在任何的类上,用来表明该类是用来执行与数据库相关的操作(即dao对象),并支持自动处理数据库操作产生的异常

在Spring2.5版本中,引入了更多的Spring类注解:@Component,@Service,@Controller。Component是一个通用的Spring容器管理的单例bean组件。而@Repository, @Service, @Controller 就是针对不同的使用场景所采取的特定功能化的注解组件。

因此,当你的一个类被 @Component 所注解,那么就意味着同样可以用 @Repository, @Service, @Controller来替代它,同时这些注解会具备有更多的功能,而且功能各异。

最后,如果你不知道要在项目的业务层采用 @Service 还是 @Component注解。那么,@Service是一个更好的选择。

就如上文所说的,@Repository早已被支持了在你的持久层作为一个标记可以去自动处理数据库操作产生的异常(译者注:因为原生的java操作数据库所产生的异常只定义了几种,但是产生数据库异常的原因却有很多种,这样对于数据库操作的报错排查造成了一定的影响;而Spring拓展了原生的持久层异常,针对不同的产生原因有了更多的异常进行描述。

所以,在注解了@Repository的类上如果数据库操作中抛出了异常,就能对其进行处理,转而抛出的是翻译后的spring专属数据库异常,方便我们对异常进行排查处理。

通过上面的话来看就是如果是数据库持久层的就使用 @Repository 注解就好了。

根据 Spring Data JPA 的项目,我们会首先定义一个接口,在这个接口上可能会继承 CrudRepository。

如下面的代码:

@Repository
public interface VisaCheckeeRepository extends CrudRepository<VisaCheckee, Long> {

    VisaCheckee findVisaCheckeeByCheckeeVisaId(String checkeeVisaId);

}

上面的代码中,就算不使用 @Repository 也是可以被扫描到的。

当然我们还是建议使用 @Repository 来注解这个与持久层有关的访问。

如果你还有实现类的话,也记得把你的实现类用 @Repository 注解上。

 

1_izvYbS8nsKC5Oy9oJxYGzg

 

 

如果,我们来看看上面的图,就能比较直观的了解 @Repository 这个注解在 Spring 项目中的地位了。

 

https://www.ossez.com/t/spring-repository/14075

标签:Repository,Service,Spring,数据库,注解,异常
From: https://www.cnblogs.com/huyuchengus/p/16631699.html

相关文章

  • Spring 最常用的几个注解
    大家都知道Spring严重依赖注解。实际开发的时候,我们用得最多的可能就是下面几个注解了。注解用途@Component最最普通的注解,表示这个类可以被注入到Spring容......
  • Spring Bean工具类
    SpringUtils工具类importcn.caijiajia.framework.util.EnvUtil;importorg.springframework.beans.BeansException;importorg.springframework.context.ApplicationCo......
  • Spring学习笔记
    Spring学习1.概述​ Spring是一个轻量级的Java开发框架,它是为了解决企业开发的复杂性而创建的,可以帮助开发人员创建对象管理对象之间的关系。​ Spring的核心是......
  • Spring @Autowired 注解静态变量
    最近应该项目的需要,需要使用一个工具类来访问数据库。但是这个工具类又被定义成静态访问了。我们也需要设置一个静态变量来访问数据库。@Autowiredprivatesta......
  • 【SpringBoot】整合Shiro
    1.什么是Shiro?ApacheShiro是一个java的安全权限框架。Shiro是可以非常容易得开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以完成,认......
  • SpringCloud 使用 LoadBalance 实现客户端负载均衡
    SpringCloud从2020.0.1版本开始,从Eureka中移除了Ribbon组件,使用LoadBalance组件来代替Ribbon实现客户端负载均衡。LoadBalance组件相对于Ribbon来说,仅支持两......
  • SpringBoot日志系统——logback
    logback是SpringBoot内置的日志处理框架,你会发现spring-boot-starter其中包含了spring-boot-starter-logging,该依赖内容就是SpringBoot默认的日志框架logback。而spr......
  • Spring源码-加载BeanDefinition之一
    一、入口protectedConfigurableListableBeanFactoryobtainFreshBeanFactory(){ //初始化BeanFactory,并进行XML文件读取,并将得到的BeanFactory记录在当前实体的......
  • spring boot 分布式session实现
    springboot分布式session实现主要是通过包装HttpServletRequest将session相关的方法进行代理。具体是的实现就是通过SessionRepositoryFilter过滤器将HttpServletReque......
  • springboot+docker发布项目20220827
    1、springboot打包项目 1)、application-dev.yml     对应配置修改 2)、项目package 生成包    3)、生成包         4)、运行......