spring注解关键字
spring注解:
(1)@Controller 控制器
(2)@Autowired 按照类型匹配,可以完成对类成员变量,方法及构造函数进行标注,完成自动装配的工作 @Autowired(required=false) 在找不到匹配Bean时也不报错
(3)@Qualifier 注释指定注入bean的名称,防止冲突,可以对成员变量、方法入参、构造函数入参进行标注
(4)@Component 通过使用@Component注释类就可以完成bean的定义,使用@Component("beanname") 来指定bean的名称
(5)@Service 通常作用在业务层,但是目前该功能与@Component相同
(6)@Scope 设置bean的类型,原型prototype,单例singleton
(7)@Repository 该注解不只是将类识别为Bean,同时它还能将锁标注的类中抛出的数据访问异常封装为spring的数据访问异常类型
spring MVC注解:
(1)@RestController @Controller的子类,在开发rest服务时不需要使用@Controller而专门使用@RestController
(2)@RequestMapping(value="get/{id}")
1)、映射位置,并带参数,既可以作用在类级别,也可以作用在方法级别
2)、@RequestMapping(value="", method="") value指向请求的实际地址,method指定请求的method类型,GET、POST、PUT、DELETE 例如:@RequestMapping(value="/{day}", method = RequestMethod.GET)
3)、@RequestMapping(consumes="") consumes方法指定处理request Content-Type的请求,例如:@RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json"),
方法仅处理request Content-Type为“application/json”类型的请求
4)、@RequestMapping(produces="") produces方法指定处理request请求中Accept头中包含的数据,例如:@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json")
方法仅处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json;
5)、@RequestMapping(params="") 处理请求中包含的某个参数,例如:@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue"),
仅处理请求中包含了名为“myParam”,值为“myValue”的请求;
6)、@RequestMapping(headers="") 仅处理request的header中的某个请求,例如:@RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/")
仅处理request的header中包含了指定“Refer”请求头和对应值为“http://www.ifeng.com/”的请求;
(3)@PathVariable //通过@PathVariable注解来绑定@RequestMapping传过来的值到方法的参数上。例如:
@RequestMapping("/pets/{petId}") //将@RequestMapping变量中的petId的值绑定到方法的petId上
public void findPet( @PathVariable String petId, Model model) {
// implementation omitted
}
(4)@RequestHeader 可以把Request请求header部分的值绑定到方法的参数上 例如:public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding,@RequestHeader("Keep-Alive") long keepAlive)
一个request的header部分:
Host localhost:8080
Accept text/html,application/xhtml+xml,application/xml;q=0.9
Accept-Language fr,en-gb;q=0.7,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
(5)@CookieValue 可以把Request header中关于cookie的值绑定到方法的参数上 例如:public void displayHeaderInfo(@CookieValue("JSESSIONID") String cookie) 即把JSESSIONID的值绑定到参数cookie上
(6)@RequestParam 常用来处理简单类型的绑定,默认为必填参数,类似于request.getParameter(""),
(7)@RequestBody 将 HTTP 请求正文插入方法中,使用适合的HttpMessageConverter将请求体写入某个对象。
(8)@ResponseBody 将内容或对象作为 HTTP 响应正文返回,使用@ResponseBody将会跳过视图处理部分,而是调用适合HttpMessageConverter,将返回值写入输出流。
(9)@ModelAttribute 这个注解和@SessionAttributes配合一起使用,可以将ModelMap中属性的值通过该注解自动赋值给指定变量
(10)@SessionAttributes 将modelMap中指定的属性放到session中。
spring支持由JSR-250规范定义的注解
(1)@Resource 作用与@Autowired类似,只不过@Autowired是按byType自动注入,而@Resource 默认按byName自动注入罢了
@Resource 注释的name属性解析为Bean的名字,而type属性则解析为Bean的类型
(2)@PostConstruct 用于方法上,注释的方法将在类初始化后调用,类似于配置文件中的 init-method
(3)@PreDestroy 用于方法上,标注了@PreDestroy的方法将在类销毁前调用
spring 支持由JSR-330规范定义的注解
(1)@Inject 等价于默认的@Autowired,只是没有required属性
(2)@Name 指定Bean名字,对应于Spring自带@Qualifier中的缺省的根据Bean名字注入情况。
(3)@Qualifier 只对应于spring自带@Qualifier限定描述符注解,即只能扩展使用,没有value属性
spring注解关键字的更多相关文章
- 【Spring注解驱动开发】聊聊Spring注解驱动开发那些事儿!
写在前面 今天,面了一个工作5年的小伙伴,面试结果不理想啊!也不是我说,工作5年了,问多线程的知识:就只知道继承Thread类和实现Runnable接口!问Java集合,竟然说HashMap是线程安全 ...
- 【Spring注解开发】组件注册-使用@Configuration和@Bean给容器中注册组件
写在前面 在之前的Spring版本中,我们只能通过写XML配置文件来定义我们的Bean,XML配置不仅繁琐,而且很容易出错,稍有不慎就会导致编写的应用程序各种报错,排查半天,发现是XML文件配置不对! ...
- 【Spring注解驱动开发】组件注册-@ComponentScan-自动扫描组件&指定扫描规则
写在前面 在实际项目中,我们更多的是使用Spring的包扫描功能对项目中的包进行扫描,凡是在指定的包或子包中的类上标注了@Repository.@Service.@Controller.@Compon ...
- 【Spring注解驱动开发】自定义TypeFilter指定@ComponentScan注解的过滤规则
写在前面 Spring的强大之处不仅仅是提供了IOC容器,能够通过过滤规则指定排除和只包含哪些组件,它还能够通过自定义TypeFilter来指定过滤规则.如果Spring内置的过滤规则不能够满足我们的 ...
- 【Spring注解驱动开发】使用@Scope注解设置组件的作用域
写在前面 Spring容器中的组件默认是单例的,在Spring启动时就会实例化并初始化这些对象,将其放到Spring容器中,之后,每次获取对象时,直接从Spring容器中获取,而不再创建对象.如果每次 ...
- 【Spring注解驱动开发】使用@Lazy注解实现懒加载
写在前面 Spring在启动时,默认会将单实例bean进行实例化,并加载到Spring容器中.也就是说,单实例bean默认在Spring容器启动的时候创建对象,并将对象加载到Spring容器中.如果我 ...
- 【Spring注解驱动开发】使用@Import注解给容器中快速导入一个组件
写在前面 我们可以将一些bean组件交由Spring管理,并且Spring支持单实例bean和多实例bean.我们自己写的类,可以通过包扫描+标注注解(@Controller.@Servcie.@Re ...
- 【Spring注解驱动开发】在@Import注解中使用ImportSelector接口导入bean
写在前面 在上一篇关于Spring的@Import注解的文章<[Spring注解驱动开发]使用@Import注解给容器中快速导入一个组件>中,我们简单介绍了如何使用@Import注解给容器 ...
- 【Spring注解驱动开发】面试官:如何将Service注入到Servlet中?朋友又栽了!!
写在前面 最近,一位读者出去面试前准备了很久,信心满满的去面试.没想到面试官的一个问题把他难住了.面试官的问题是这样的:如何使用Spring将Service注入到Servlet中呢?这位读者平时也是很 ...
随机推荐
- 阻塞IO服务器模型之单线程服务器模型
单线程服务器模型是最简单的一个服务器模型,几乎我们所有程序员在刚开始接触网络编程(不管是B/S结构还是C/S结构)都是从这个简单的模型开始.这种模型只提供同时一个客户端访问,多个客户端访问必须要等到前 ...
- x264源代码简单分析:宏块分析(Analysis)部分-帧间宏块(Inter)
===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...
- 指令汇B新闻客户端开发(二) 主页面布局
这个主页面采用了一个开源框架SlidingMenu,这个可以在git上面下载.把这些下载下来的文件import我们的eclipse中,用我们的项目去加载这个library,在这个过程中很有可能会报错, ...
- SQL 数据库语言分析总结(一)
SQL语言是被广泛采用的数据库的学习语言,之前在本科的时候已经学习过了,但是后来又忘记了,所以这次简单的总结一下. 分类 交互式sql语言,交互式语言主要是利用一些数据库工具,比如mysql的终端工具 ...
- 返回present的根
//返回四大tab页面 + (void)gobackToTabarController { UINavigationController* selectedTabNavController = (UI ...
- 从二进制数据流中构造GDAL可以读取的图像数据(C#)
在上一篇博客中,讲了一下使用GDAL从文件流中构造一个GDAL可以识别的数据来进行处理.原以为这个接口在C#中没有,仔细看了下GDAL库中源码,发现C#版本也有类似的函数,下面是GDAL库中的一个C# ...
- java模拟链表
java语言不存在指针,但是我们仍可以用相应的逻辑模拟链表的实现,下面这段代码就是我的一个小伙伴实现的: package com.brucezhang.test; public class ...
- iOS中 语音识别功能/语音转文字教程详解 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博 原文地址:http://blog.csdn.net/qq_31810357/article/details/5111 ...
- A*寻路算法入门(二)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- ADO.NET常用方法释义
先列个列表,下面的就是常用的数据库操作的方法. ExecuteNonQuery 释义:对链接执行的SQL语句,并返回受影响的行数(注意:用它来执行目录操作,如查询数据库的结构,创建表等数据库对象,或通 ...