zoukankan      html  css  js  c++  java
  • spring框架中三层架构相关的注解

    做了这么多年的C++,再去学Java,确实发现,语言都是相通的,即使是Java的那么多生态,理解起来也并不费劲

    Spring 框架目前还在学习中,处于 Tourist 阶段,目前只求会做,不求原理,等到项目经验丰富,运用熟练,再回头来研究原理

    1、说明

    springmvc 框架中将业务功能分成了经典的三层:持久层、业务层和控制层,框架中分别使用 @Repository、@Service 和 @Controller 注解来表示各层,使用 @Component 注解对不好分层的类进行注解修饰

    这四个注解的作用除了阅读时分层之外,最重要的是,被其修饰的类会被spring框架扫描并注入到bean容器中,使用时,只需要使用装配的方式获取对象即可

    这四个注解都有一个属性 value,该属性的作用在 spring 中,用于根据此值获取注入对象,springboot 中,可以使用 @Autowired 注解自动装配,所以此属性用处不大

    2、@Repository

    顾名思义,@Repository 表示一些持久层的组件,用于标注数据库访问的 DAO 组件

    其内部会封装一些 不涉及具体业务逻辑 的基本的数据库操作,例如根据某个字段查找、添加、删除,封装数据库query索引等

    @Repository 注解标记在类上

    一般用法如下:

    1. 先定义一个接口,声明基本的接口方法;
    2. 添加接口实现类,实现这些接口,@Repository 注解修饰实现类;

    示例:

    public interface ProductRepository{
        public Product findById(Long id);
    }
    
    @Repository
    public ProductRepositoryImpl implements ProductRepository{
        public Product findById(Long id){
            //实现方法
        }
    }
    

    3、@Service

    属于业务逻辑层,其内部方法 包含具体的业务逻辑,一般称之为 service层 或者 manager层

    service层类的内部一般会通过注入的方式得到repository层的对象,进而进行一些复杂的业务逻辑处理

    @Service 注解标记在类上

    4、@Controller

    controller 作为MVC的C层,用于分发前端的请求,其内部一般会使用注入的方式得到 service 层对象,进行一些请求分发处理

    @Controller 标记在类上,表示此类是一个controller,其内部的方法用于接受请求,具体的请求方式使用 @RequestMapping 等注解进行映射

    4.1、 @RestController

    @RestController 注解的效果等同于 @Controller + @ResponseBody

    使用 @RestController 后,controller 方法返回 java 对象,就不再需要使用 @ResponseBody 注解转换

    5、@Component

    @Component 一般用于组件,一些需要使用 spring 的依赖注入功能,但是又不好分层的类,可以使用此注解

  • 相关阅读:
    Linux 下QT安装教程
    内核中断及按键驱动程序
    Linux 输入子系统原理理解(原创)
    深入分析Linux内核源码oss.org.cn/kernel-book/
    [MSDN]最新Win7 SP1简体中文所有版本下载
    递归打印级联目录
    递归与迭代学习(联级目录的创建与删除)
    PHP三种方法实现多文件上传
    PHP实现商城购物车类(SESSION+单例模式 )(亲测)
    PHP生成缩略图、验证码类封装
  • 原文地址:https://www.cnblogs.com/sherlock-lin/p/13021022.html
Copyright © 2011-2022 走看看