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

最新文章

  1. spring源码解析——spring源码导入eclipse
  2. C# partial 學習筆記
  3. Sublime Text怎么在切分两行视口内显示同一个文件
  4. 51nod1262 扔球
  5. eclipse导入javax.servlet.*的方法
  6. phpstorm使用技巧
  7. Ext.MessageBox的用法
  8. windows服务状态自动启动
  9. OC中的@interface和java中的区别以及 @implementation @protocol
  10. linux下Oracle11g RAC搭建(六)
  11. Mongodb 导出json 和csv 格式数据
  12. 14.LINUX-platform机制实现驱动层分离(详解)
  13. LeetCode第十四题-字符串数组中最长的共同前缀
  14. iOS启动速度优化
  15. FireMonkey 源码学习(3)
  16. 39、ABTestingGateway
  17. c++的重载 缺省参数和命名空间详解
  18. Linux的bash快捷键
  19. Remote Desktop Connection没法全屏解决方案
  20. Android深入理解JNI(二)类型转换、方法签名和JNIEnv

热门文章

  1. MySQL升级-CentOS6.8
  2. Python基础03 id
  3. 前端之HTML1
  4. 设计模式(Java语言)- 建造者模式
  5. 【Hadoop离线基础总结】Hive的基本操作
  6. NLTK数据包下载频繁报错——解决方法
  7. 图形学_opengl纹理映射
  8. Keycloak & Asp.net core webapi 整合跳坑之旅
  9. [Selenium] 自动侦测浏览器版本并下载对应的浏览器驱动
  10. 排序算法:图解快速排序算法--不超过18行代码Python和JavaScript实现快速排序算法