做了这么多年的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 的依赖注入功能,但是又不好分层的类,可以使用此注解

spring框架中三层架构相关的注解的更多相关文章

  1. Spring框架中的@Import、@ImportResource注解

    spring@Import @Import注解在4.2之前只支持导入配置类 在4.2,@Import注解支持导入普通的java类,并将其声明成一个bean 使用场景: import注解主要用在基于ja ...

  2. Spring框架中Bean管理的常用注解

    1. @Component:组件.(作用在类上)可以作用在任何一个类上 2. Spring中提供@Component的三个衍生注解:(功能目前来讲是一致的) * @Controller -- 作用在W ...

  3. spring框架中的@Import注解

    spring框架中的@Import注解 Spring框架中的@Import注解 在之前的文章中,作者介绍了Spring JavaConfig. 这是除了使用传统的XML文件之外,spring带来的新的 ...

  4. 细说shiro之五:在spring框架中集成shiro

    官网:https://shiro.apache.org/ 1. 下载在Maven项目中的依赖配置如下: <!-- shiro配置 --> <dependency> <gr ...

  5. Spring5源码解析-Spring框架中的单例和原型bean

    Spring5源码解析-Spring框架中的单例和原型bean 最近一直有问我单例和原型bean的一些原理性问题,这里就开一篇来说说的 通过Spring中的依赖注入极大方便了我们的开发.在xml通过& ...

  6. Spring框架中ModelAndView、Model、ModelMap区别

    原文地址:http://www.cnblogs.com/google4y/p/3421017.html SPRING框架中ModelAndView.Model.ModelMap区别   注意:如果方法 ...

  7. Spring框架中的定时器 使用和配置

    Spring框架中的定时器 如何使用和配置 转载自:<Spring框架中的定时器 如何使用和配置>https://www.cnblogs.com/longqingyang/p/554543 ...

  8. 【Spring】8、Spring框架中的单例Beans是线程安全的么

    看到这样一个问题:spring框架中的单例Beans是线程安全的么? Spring框架并没有对单例bean进行任何多线程的封装处理.关于单例bean的线程安全和并发问题需要开发者自行去搞定.但实际上, ...

  9. 解决Spring框架的Dao层改用@Repository注解,无法使用JdbcDaoSupport的问题

    解决Spring框架的Dao层改用@Repository注解,无法使用JdbcDaoSupport的问题 Alternatively, create an own implementation of ...

随机推荐

  1. 学习HTML

    前端三剑客:HTML.CSS.JavaScript.现在就开始学习HTML啦. 学习资源:http://www.freecodecamp.cn/ 学习笔记: h1,head1,一级标题 <h1& ...

  2. springboot关于webmvc配置问题记录

    在之前的文章(springboot配置静态资源访问路径)中说过,springboot默认的加载静态资源的地方是在resources目录下的static文件夹下,其实除了resources目录下得sta ...

  3. Day_11【集合】扩展案例5_对list集合对象中的元素进行反转,求最大值最小值,求元素i在list集合中首次出现的索引,将oldvalue替换为newvalue

    分析以下需求,并用代码实现 定义MyArrays工具类,该工具类中有以下方法,方法描述如下: 1.public static void reverse(ArrayList<Integer> ...

  4. Pytorch使用分布式训练,单机多卡

    pytorch的并行分为模型并行.数据并行 左侧模型并行:是网络太大,一张卡存不了,那么拆分,然后进行模型并行训练. 右侧数据并行:多个显卡同时采用数据训练网络的副本. 一.模型并行 二.数据并行 数 ...

  5. python 基础知识4 - 字典

    1.字典增 #字典增 dic = {'name': '大白', 'age': 20} dic['hight'] = 180 #没有键值对,添加 dic['age'] = 18 #有键值对,覆盖 pri ...

  6. 移动端纯css超出盒子出现横向滚动条

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...

  7. 基于hexo创建博客(Github托管)

    基于hexo的博客 搭建好的博客网站 dengshuo7412.com 搭建步骤 1.依赖文件下载 Node.js 2.Hexo的安装 3.部署到Github 4.Hexo创建博客基本操作 5.Hex ...

  8. shell脚本常用命令汇总

    一.shell脚本概述和入门 (1)shell脚本是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核 (2)shell脚本的常用执行方式: 第一种:采用bash或sh+脚本的相对路径或 ...

  9. Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像

    前文传送门: 「Python 图像处理 OpenCV (1):入门」 普通操作 1. 读取像素 读取像素可以通过行坐标和列坐标来进行访问,灰度图像直接返回灰度值,彩色图像则返回B.G.R三个分量. 需 ...

  10. 搞懂:MVVM模型以及VUE中的数据绑定数据劫持发布订阅模式

    搞懂:MVVM模式和Vue中的MVVM模式 MVVM MVVM : model - view - viewmodel的缩写,说都能直接说出来 model:模型,view:视图,view-Model:视 ...