做了这么多年的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 注解修饰实现类;

示例:

  1. public interface ProductRepository{
  2. public Product findById(Long id);
  3. }
  1. @Repository
  2. public ProductRepositoryImpl implements ProductRepository{
  3. public Product findById(Long id){
  4. //实现方法
  5. }
  6. }

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. 完了!CPU一味求快出事儿了!

    自我介绍 我叫阿Q,是CPU一号车间里的员工,我所在的这个CPU足足有8个核,就有8个车间,干起活来杠杠滴. 我所在的一号车间里,除了负责执行指令的我,还有负责取指令的小A,负责分析指令的小胖和负责结 ...

  2. 深度剖析西门子PLC的开放式TCP通信

    对于自控或电气工程师来说,西门子PLC是每个人都非常熟悉的一款PLC品牌:而对于上位机开发工程师来说,Socket通信或TCP/IP协议也是必须要掌握的一种通信方式.刚好手头有一款西门子的200Sma ...

  3. redis 集群安装

    redis集群安装 1.下载redis源码 2.解压并进入解压后的文件夹redis内 3.make,生成一系列的文件(mkreleasehdr.sh, redis-benchmark, redis-c ...

  4. js 控制窗口跳转

    使用iframe 或者使用子窗口时,session 失效时是浏览器地址转换 相关js代码:if(top!=self){ if(top.location != self.location) top.lo ...

  5. .Net Core3.0 WebApi 项目框架搭建 四:JWT权限验证

    .Net Core3.0 WebApi 项目框架搭建:目录 什么是JWT 根据维基百科定义,JWT(读作 [/dʒɒt/]),即JSON Web Tokens,是一种基于JSON的.用于在网络上声明某 ...

  6. 萌新学习SpringMVC

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 这篇SpringMVC被催了很久了,这阵子由于做 ...

  7. 【DevCloud · 敏捷智库】如何拆分用户故事

    提起用户故事拆分,我们听得最多的就是INVEST原则(关于INVEST原则可以参考文章“用户故事等于需求说明”——你一定没有写好用户故事),但很多人面临的问题是拿到一个较大的用户故事时,该如何拆分才能 ...

  8. Form action 方法上传文件

    <form method="post" id="form1" runat="server" enctype="multipa ...

  9. asp中设置session过期时间方法总结

    http://www.jb51.net/article/31217.htm asp中设置session过期时间方法总结 作者: 字体:[增加 减小] 类型:转载   asp中默认session过期时间 ...

  10. SpringBoot之整合MongoDB

    MongoDB官网安装:https://www.mongodb.com/download-center/community MongoDB客户端工具(Mongo Management Studio)安 ...