spring框架中三层架构相关的注解
做了这么多年的C++,再去学Java,确实发现,语言都是相通的,即使是Java的那么多生态,理解起来也并不费劲
Spring 框架目前还在学习中,处于 Tourist 阶段,目前只求会做,不求原理,等到项目经验丰富,运用熟练,再回头来研究原理
1、说明
springmvc 框架中将业务功能分成了经典的三层:持久层、业务层和控制层,框架中分别使用 @Repository、@Service 和 @Controller 注解来表示各层,使用 @Component 注解对不好分层的类进行注解修饰
这四个注解的作用除了阅读时分层之外,最重要的是,被其修饰的类会被spring框架扫描并注入到bean容器中,使用时,只需要使用装配的方式获取对象即可
这四个注解都有一个属性 value,该属性的作用在 spring 中,用于根据此值获取注入对象,springboot 中,可以使用 @Autowired 注解自动装配,所以此属性用处不大
2、@Repository
顾名思义,@Repository 表示一些持久层的组件,用于标注数据库访问的 DAO 组件
其内部会封装一些 不涉及具体业务逻辑 的基本的数据库操作,例如根据某个字段查找、添加、删除,封装数据库query索引等
@Repository 注解标记在类上
一般用法如下:
- 先定义一个接口,声明基本的接口方法;
- 添加接口实现类,实现这些接口,@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框架中三层架构相关的注解的更多相关文章
- Spring框架中的@Import、@ImportResource注解
spring@Import @Import注解在4.2之前只支持导入配置类 在4.2,@Import注解支持导入普通的java类,并将其声明成一个bean 使用场景: import注解主要用在基于ja ...
- Spring框架中Bean管理的常用注解
1. @Component:组件.(作用在类上)可以作用在任何一个类上 2. Spring中提供@Component的三个衍生注解:(功能目前来讲是一致的) * @Controller -- 作用在W ...
- spring框架中的@Import注解
spring框架中的@Import注解 Spring框架中的@Import注解 在之前的文章中,作者介绍了Spring JavaConfig. 这是除了使用传统的XML文件之外,spring带来的新的 ...
- 细说shiro之五:在spring框架中集成shiro
官网:https://shiro.apache.org/ 1. 下载在Maven项目中的依赖配置如下: <!-- shiro配置 --> <dependency> <gr ...
- Spring5源码解析-Spring框架中的单例和原型bean
Spring5源码解析-Spring框架中的单例和原型bean 最近一直有问我单例和原型bean的一些原理性问题,这里就开一篇来说说的 通过Spring中的依赖注入极大方便了我们的开发.在xml通过& ...
- Spring框架中ModelAndView、Model、ModelMap区别
原文地址:http://www.cnblogs.com/google4y/p/3421017.html SPRING框架中ModelAndView.Model.ModelMap区别 注意:如果方法 ...
- Spring框架中的定时器 使用和配置
Spring框架中的定时器 如何使用和配置 转载自:<Spring框架中的定时器 如何使用和配置>https://www.cnblogs.com/longqingyang/p/554543 ...
- 【Spring】8、Spring框架中的单例Beans是线程安全的么
看到这样一个问题:spring框架中的单例Beans是线程安全的么? Spring框架并没有对单例bean进行任何多线程的封装处理.关于单例bean的线程安全和并发问题需要开发者自行去搞定.但实际上, ...
- 解决Spring框架的Dao层改用@Repository注解,无法使用JdbcDaoSupport的问题
解决Spring框架的Dao层改用@Repository注解,无法使用JdbcDaoSupport的问题 Alternatively, create an own implementation of ...
随机推荐
- IDEA2020版使用
idea2020版本出来了,不知道小伙伴使用了吗?是不是还在为激活而烦恼呢?我来给小伙伴解决烦恼了,直接上硬货,解决方法我是在B站找到,所以分享出来! 1.直接进IDEA官网下载最近的idea,官网连 ...
- P2432 zxbsmk爱查错
描述:https://www.luogu.com.cn/problem/P2432 给你一个主串以及若干个子串,求最少需要删除几个字母,使得主串能由一些子串组成. dp [ i ] 表示前 i 个字符 ...
- 模块_os模块
import os print(os.getcwd()) # 获取当前工作目录 print(os.listdir()) # 列表列出当前目录下的目录名和文件名 os.mkdir("tempd ...
- sshd: no hostkeys available — exiting
在开启SSHD服务时报错.sshd re-exec requires execution with an absolute path用绝对路径启动,也报错如下:Could not load host ...
- MySQL连接不上
access denied for user root @localhost 解决办法: create user 'root'@'localhost' identified by '你的密码'; gr ...
- matlab读取csv文件并显示
传统的方式可以通过读取文件,然后处理字符串的方式对csv文件进行解析,在matlab中可以通过csvread函数读取csv文件,然后通过plot对数据进行显示,也可以对里面的函数进行分析: csv文件 ...
- python学习(11)文件的读写操作
1.读文件的7种操作模式 操作模式 具体含义 'r' 读取 (默认) 'w' 写入(会先截断之前的内容) 'x' 写入,如果文件已经存在会产生异常 'a' 追加,将内容写入到已有文件的末尾 'b' 二 ...
- 存储过程——异常捕获&打印异常信息
目录 0. 背景说明 1. 建立异常信息表ErrorLog 2. 建立保存异常信息的存储过程 3. 建立在SQL Server中打印异常信息的存储过程 4. 建立一个用于测试的存储过程抛出异常进行测试 ...
- 【漫画】读写锁ReadWriteLock还是不够快?再试试StampedLock!
本文来源于公众号[胖滚猪学编程] 转载请注明出处! 在互斥锁ReentrantLock不好用?试试读写锁ReadWriteLock一文中,我们对比了互斥锁ReentrantLock和读写锁ReadWr ...
- git推送代码问题之:ERROR: [abcdefg] missing Change-Id in commit message footer
一.问题: 在日常的工作中,使用git推送代码时会出现以下报错,“missing Change-Id in commit message” : qinjiaxi:$ git push origin H ...