列举springmvc的常用注解有哪些?(springmvc常用的注解有哪些)

2025-11-26 22:45:02 :0

列举springmvc的常用注解有哪些?(springmvc常用的注解有哪些)

大家好,关于列举springmvc的常用注解有哪些?很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于springmvc常用的注解有哪些的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

springmvc常用的注解有哪些

1、@Controller
在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。
@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。单单使用@Controller 标记在一个类上还不能真正意义上的说它就是SpringMVC 的一个控制器类,因为这个时候Spring 还不认识它。那么要如何做Spring 才能认识它呢?这个时候就需要我们把这个控制器类交给Spring 来管理。有两种方式:
(1)在SpringMVC 的配置文件中定义MyController 的bean 对象。
(2)在SpringMVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller 控制器。
《!--方式一--》《bean class="com.host.app.web.controller.MyController"/》《!--方式二--》《 context:component-scan base-package = "com.host.app.web" /》//路径写到controller的上一层(扫描包详解见下面浅析)
2、@RequestMapping
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
RequestMapping注解有六个属性,下面我们把她分成三类进行说明(下面有相应示例)。
1、 value, method;
value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
2、consumes,produces
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
3、params,headers
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
3、@Resource和@Autowired

spring的注解有哪些

多个包逗号隔开。
1、@Component
@Component
是所有受Spring 管理组件的通用形式,@Component注解可以放在类的头上,@Component不推荐使用。
2、@Controller
@Controller对应表现层的Bean,也就是Action,例如:
1 @Controller
2 @Scope("prototype")
3 public class UserAction extends BaseAction《User》{
4 ……
5 }
使用@Controller注解标识UserAction之后,就表示要把UserAction交给Spring容器管理,在Spring容器中会存在一个名字为"userAction"的action,这个名字是根据UserAction类名来取的。注意:如果@Controller不指定其value【@Controller】,则默认的bean名字为这个类的类名首字母小写,如果指定value【@Controller(value="UserAction")】或者【@Controller("UserAction")】,则使用value作为bean的名字。
这里的UserAction还使用了@Scope注解,@Scope("prototype")表示将Action的范围声明为原型,可以利用容器的scope="prototype"来保证每一个请求有一个单独的Action来处理,避免struts中Action的线程安全问题。spring 默认scope 是单例模式(scope="singleton"),这样只会创建一个Action对象,每次访问都是同一Action对象,数据不安全,struts2 是要求每次次访问都对应不同的Action,scope="prototype" 可以保证当有请求的时候都创建一个Action对象
3、@ Service
@Service对应的是业务层Bean,例如:
1 @Service("userService")
2 public class UserServiceImpl implements UserService {
3 ………
4 }
@Service("userService")注解是告诉Spring,当Spring要创建UserServiceImpl的的实例时,bean的名字必须叫做"userService",这样当Action需要使用UserServiceImpl的的实例时,就可以由Spring创建好的"userService",然后注入给Action:在Action只需要声明一个名字叫“userService”的变量来接收由Spring注入的"userService"即可,具体代码如下:
1 // 注入userService
2 @Resource(name = "userService")
3 private UserService userService;
注意:在Action声明的“userService”变量的类型必须是“UserServiceImpl”或者是其父类“UserService”,否则由于类型不一致而无法注入,由于Action中的声明的“userService”变量使用了@Resource注解去标注,并且指明了其name = "userService",这就等于告诉Spring,说我Action要实例化一个“userService”,你Spring快点帮我实例化好,然后给我,当Spring看到userService变量上的@Resource的注解时,根据其指明的name属性可以知道,Action中需要用到一个UserServiceImpl的实例,此时Spring就会把自己创建好的名字叫做"userService"的UserServiceImpl的实例注入给Action中的“userService”变量,帮助Action完成userService的实例化,这样在Action中就不用通过“UserService userService = new UserServiceImpl();”这种最原始的方式去实例化userService了。如果没有Spring,那么当Action需要使用UserServiceImpl时,必须通过“UserService userService = new UserServiceImpl();”主动去创建实例对象,但使用了Spring之后,Action要使用UserServiceImpl时,就不用主动去创建UserServiceImpl的实例了,创建UserServiceImpl实例已经交给Spring来做了,Spring把创建好的UserServiceImpl实例给Action,Action拿到就可以直接用了。Action由原来的主动创建UserServiceImpl实例后就可以马上使用,变成了被动等待由Spring创建好UserServiceImpl实例之后再注入给Action,Action才能够使用。这说明Action对“UserServiceImpl”类的“控制权”已经被“反转”了,原来主动权在自己手上,自己要使用“UserServiceImpl”类的实例,自己主动去new一个出来马上就可以使用了,但现在自己不能主动去new“UserServiceImpl”类的实例,new“UserServiceImpl”类的实例的权力已经被Spring拿走了,只有Spring才能够new“UserServiceImpl”类的实例,而Action只能等Spring创建好“UserServiceImpl”类的实例后,再“恳求”Spring把创建好的“UserServiceImpl”类的实例给他,这样他才能够使用“UserServiceImpl”,这就是Spring核心思想“控制反转”,也叫“依赖注入”,“依赖注入”也很好理解,Action需要使用UserServiceImpl干活,那么就是对UserServiceImpl产生了依赖,Spring把Acion需要依赖的UserServiceImpl注入(也就是“给”)给Action,这就是所谓的“依赖注入”。对Action而言,Action依赖什么东西,就请求Spring注入给他,对Spring而言,Action需要什么,Spring就主动注入给他。
4、@ Repository
@Repository对应数据访问层Bean ,例如:
1 @Repository(value="userDao")
2 public class UserDaoImpl extends BaseDaoImpl《User》 {
3 ………
4 }
@Repository(value="userDao")注解是告诉Spring,让Spring创建一个名字叫“userDao”的UserDaoImpl实例。
当Service需要使用Spring创建的名字叫“userDao”的UserDaoImpl实例时,就可以使用@Resource(name = "userDao")注解告诉Spring,Spring把创建好的userDao注入给Service即可。
1 // 注入userDao,从数据库中根据用户Id取出指定用户时需要用到
2 @Resource(name = "userDao")
3 private BaseDao《User》 userDao;

关于列举springmvc的常用注解有哪些?到此分享完毕,希望能帮助到您。

列举springmvc的常用注解有哪些?(springmvc常用的注解有哪些)

本文编辑:admin

更多文章:


进制转换的8421法(十进制如何转换成8421码~~请说方法)

进制转换的8421法(十进制如何转换成8421码~~请说方法)

大家好,进制转换的8421法相信很多的网友都不是很明白,包括十进制如何转换成8421码~~请说方法也是一样,不过没有关系,接下来就来为大家分享关于进制转换的8421法和十进制如何转换成8421码~~请说方法的一些知识点,大家可以关注收藏,免

2026年5月11日 00:45

线程和进程的区别是什么 面试(linux进程和线程的区别 面试)

线程和进程的区别是什么 面试(linux进程和线程的区别 面试)

各位老铁们好,相信很多人对线程和进程的区别是什么 面试都不是特别的了解,因此呢,今天就来为大家分享下关于线程和进程的区别是什么 面试以及linux进程和线程的区别 面试的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文

2026年1月20日 03:15

rabbitmq最新版本(rabbitmq3.8.2安装步骤及集群配置)

rabbitmq最新版本(rabbitmq3.8.2安装步骤及集群配置)

今天给各位分享rabbitmq3.8.2安装步骤及集群配置的知识,其中也会对rabbitmq3.8.2安装步骤及集群配置进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录rabbitmq3.8.2安装步骤及集群配

2025年11月21日 11:00

易语言源码打开停止工作(同样一个易语言源码,为什么在我的电脑上运行就卡死,在别人的电脑上运行是正常的)

易语言源码打开停止工作(同样一个易语言源码,为什么在我的电脑上运行就卡死,在别人的电脑上运行是正常的)

其实易语言源码打开停止工作的问题并不复杂,但是又很多的朋友都不太了解同样一个易语言源码,为什么在我的电脑上运行就卡死,在别人的电脑上运行是正常的,因此呢,今天小编就来为大家分享易语言源码打开停止工作的一些知识,希望可以帮助到大家,下面我们一

2026年5月15日 01:30

powershell快捷键打开(windows10的控制面板在哪里找)

powershell快捷键打开(windows10的控制面板在哪里找)

本篇文章给大家谈谈powershell快捷键打开,以及windows10的控制面板在哪里找对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录w

2026年8月7日 07:15

oracle数据库完整性(oracle添加记录的时候提示违反完整性约束,未找到父项关键字怎么解决)

oracle数据库完整性(oracle添加记录的时候提示违反完整性约束,未找到父项关键字怎么解决)

各位老铁们,大家好,今天由我来为大家分享oracle数据库完整性,以及oracle添加记录的时候提示违反完整性约束,未找到父项关键字怎么解决的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力

2025年10月15日 22:30

java找不到工作想去送快递了(昌平北大青鸟分享学Java找不到工作的原因)

java找不到工作想去送快递了(昌平北大青鸟分享学Java找不到工作的原因)

今天给各位分享昌平北大青鸟分享学Java找不到工作的原因的知识,其中也会对昌平北大青鸟分享学Java找不到工作的原因进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录昌平北大青鸟分享学Java找不到工作的原因ja

2026年8月6日 10:45

后台管理系统模板如何使用(开源网店iWeb Shop的模板管理后台怎么操作有什么值得注意的地方)

后台管理系统模板如何使用(开源网店iWeb Shop的模板管理后台怎么操作有什么值得注意的地方)

这篇文章给大家聊聊关于后台管理系统模板如何使用,以及开源网店iWeb Shop的模板管理后台怎么操作有什么值得注意的地方对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录开源网店iWeb Shop的模板管理后台怎么操作有什么值得

2025年10月30日 18:15

高级程序设计语言的主要功能(高级语言的控制结构主要包含什么)

高级程序设计语言的主要功能(高级语言的控制结构主要包含什么)

“高级程序设计语言的主要功能”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看高级程序设计语言的主要功能(高级语言的控制结构主要包含什么)!本文目录高级语言的控制结构主要包含什么用高级程序设计语言编写的程序可读性好,是因为什么

2025年12月8日 19:00

mapreduce的优势(hadoop与传统的关系型数据库(如oracle)相比,有什么优势及劣势)

mapreduce的优势(hadoop与传统的关系型数据库(如oracle)相比,有什么优势及劣势)

大家好,mapreduce的优势相信很多的网友都不是很明白,包括hadoop与传统的关系型数据库(如oracle)相比,有什么优势及劣势也是一样,不过没有关系,接下来就来为大家分享关于mapreduce的优势和hadoop与传统的关系型数据

2026年2月12日 15:00

安卓入门开发(安卓如何 初学者必备的安卓入门指南)

安卓入门开发(安卓如何 初学者必备的安卓入门指南)

今天给各位分享安卓如何 初学者必备的安卓入门指南的知识,其中也会对安卓如何 初学者必备的安卓入门指南进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录安卓如何 初学者必备的安卓入门指南安卓程序开发入门Androi

2025年7月29日 11:15

java交互界面怎么做(北大青鸟java培训:常见交互设计表现形式)

java交互界面怎么做(北大青鸟java培训:常见交互设计表现形式)

大家好,java交互界面怎么做相信很多的网友都不是很明白,包括北大青鸟java培训:常见交互设计表现形式也是一样,不过没有关系,接下来就来为大家分享关于java交互界面怎么做和北大青鸟java培训:常见交互设计表现形式的一些知识点,大家可以

2026年3月23日 04:00

18是什么意思?未满18岁者请勿进入 什么意思

18是什么意思?未满18岁者请勿进入 什么意思

“18”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看18是什么意思?未满18岁者请勿进入 什么意思!本文目录18是什么意思未满18岁者请勿进入 什么意思18是什么意思18这个数字代表:成年、青春。18这个数字代表的含义:十

2026年3月15日 00:15

pull together(pull together是什么意思)

pull together(pull together是什么意思)

各位老铁们,大家好,今天由我来为大家分享pull together,以及pull together是什么意思的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年1月6日 13:30

substantial变形单词(哪些英语单词可以表达 “重要的” 以及它们的区别)

substantial变形单词(哪些英语单词可以表达 “重要的” 以及它们的区别)

这篇文章给大家聊聊关于substantial变形单词,以及哪些英语单词可以表达 “重要的” 以及它们的区别对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录哪些英语单词可以表达 “重要的” 以及它们的区别高中英语选择性必修二单词

2026年1月13日 17:00

持续集成框架(jmeter持续集成为什么要用ant)

持续集成框架(jmeter持续集成为什么要用ant)

各位老铁们好,相信很多人对持续集成框架都不是特别的了解,因此呢,今天就来为大家分享下关于持续集成框架以及jmeter持续集成为什么要用ant的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录jmeter持续集成为什

2025年6月22日 22:15

floor和ceil函数(Math之ceil、floor、round区别)

floor和ceil函数(Math之ceil、floor、round区别)

其实floor和ceil函数的问题并不复杂,但是又很多的朋友都不太了解Math之ceil、floor、round区别,因此呢,今天小编就来为大家分享floor和ceil函数的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年1月22日 22:30

汉化版eclipse(在汉化版eclipse中编写java程序,无法解析start是什么意思)

汉化版eclipse(在汉化版eclipse中编写java程序,无法解析start是什么意思)

各位老铁们好,相信很多人对汉化版eclipse都不是特别的了解,因此呢,今天就来为大家分享下关于汉化版eclipse以及在汉化版eclipse中编写java程序,无法解析start是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,

2025年8月6日 22:30

interesting怎么读英语(“interesting”怎么读)

interesting怎么读英语(“interesting”怎么读)

其实interesting怎么读英语的问题并不复杂,但是又很多的朋友都不太了解“interesting”怎么读,因此呢,今天小编就来为大家分享interesting怎么读英语的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧

2026年5月11日 15:45

程序设计语言从机器语言到高级语言的抽象(高级语言的好处)

程序设计语言从机器语言到高级语言的抽象(高级语言的好处)

大家好,程序设计语言从机器语言到高级语言的抽象相信很多的网友都不是很明白,包括高级语言的好处也是一样,不过没有关系,接下来就来为大家分享关于程序设计语言从机器语言到高级语言的抽象和高级语言的好处的一些知识点,大家可以关注收藏,免得下次来找不

2025年11月7日 12:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索