Spring常用注解汇总
来源:互联网 发布:js获取农历日期 编辑:程序博客网 时间:2024/05/16 02:38
使用注解前需要开启自动扫描功能,其中base-package为需要扫描的包(含子包)。
<context:component-scan base-package="cn.test"/>
1声明Bean注解
1@Component
注解在类上,可以作用在任何层次。泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
是一个泛化的概念,仅仅表示一个组件 (Bean) ,将一个实体类,放入bean中。
2@ Service
注解在类上用于标注业务层组件3@ Controller
注解在类上用于标注控制层组件(如struts中的action)4@ Repository
注解在类上用于标注数据访问组件,即DAO组件。2注入Bean注解
1@Autowired
可以对成员变量、方法、构造函数、类,进行注释。默认按类型装配
注解在set方法上或属性上
如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。
如:@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用
2@Resource
默认按名称装配,当找不到与名称匹配的bean才会按类型装配。3@Inject
JSR-330提供的注解3Java配置
1@Configuration
注解在类上
声明当前类是一个配置类,相当于一个Spring配置的xml文件。把一个类作为一个IoC容器
和@Bean搭配使用,某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
2@Bean
注解在方法上
声明当前方法的返回值为一个Bean。
3@ComponentScan
注解在类上
自动什么包名下所有使用@Service、@Compent、@Repository、@Controller的类,并注册为Bean。
4@Lazy(true)
表示延迟初始化5@Primary
自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常3AOP
1@Aspect
注解在类上声明是一个切面。2@After
注解在方法上声明建言3@Before
注解在方法上声明建言4@Around
注解在方法上声明建言5@PointCut
注解在方法上定义拦截规则,声明切点。4常用配置
4.1Bean的Scope
1@Scope
注解在类上用于指定scope作用域的
描述的是Spring容器如何新建Bean的实例的。实例:Scope("Prototype")
1Singleton一个spring容器中只要一个Bean的实例,此为Spring的默认配置,全容器共享一个实例。2Prototype每次调用新建一个Bean实例3RequestWeb项目中,给每一个http request新建一个Bean实例。4SessionWeb项目中,给每一个http session新建一个Bean实例。5GlobalSession这个只在portal应用中有用,给每一个global http session 新建一个Bean实例。4.2Spring EL 和 资源调用
1@Value
注解在变量上调用资源(普通文件,网址,配置文件,系统环境变量等)2@PropertySource
注解在类上注入配置文件是来指定文件地址。4.3Bean的初始化和销毁
1@Bean
注解在方法上@Bean(initMethod="init",destroyMethod="destory")
在构造函数执行后执行,在Bean销毁之前执行。
2@PostConstruct
注解在方法上在构造函数执行后执行3@PreDestroy
注解在方法上在Bean销毁之前执行4@DependsOn
注解在方法上定义Bean初始化及销毁时的顺序4.4Profile
1@Profile
注解在类、方法上在不同情况下选择实例化不同的Bean。4.5事件
4.6多线程
1@EnableAsync
注解在配置类上开启对异步任务的支持2@Async
在实际执行的Bean的方法中声明这是一个异步任务4.7计划任务(定时任务)
1@EnableScheduling
注解在配置类上开启对j计划任务(定时任务)的支持2@Scheduled
在实际执行的方法上在要执行计划任务的方法上通过@Scheduled 声明这是一个计划任务。
包含:cron 、fixDelay、fixRate等类型
cron@Scheduled (cron="0 25 11 ? * *")cron是linux和unix系统下的定时任务fixDelay@Scheduled (fixedDelay=5000)延迟5秒执行fixRate@Scheduled (fixedRate=5000)每隔5秒执行一次4.8条件注解
1@Conditional
用在配置类中根据满足某一个特定条件创建一个特定的Bean。(Spring4提供)4.9元注解
元注解:用来注解别的注解的注解。
组合注解:被注解的注解。
组合注解具备注解其上的元注解的功能。
@WiselyConfiguration=@Configuration+@CompontScan
5.0 @Enable*注解
1@EnableAspectJAutoProxy
作用在配置类上开启对AspectJ自动代理的支持。2@EnableAsync
注解在配置类上开启对异步任务的支持3@EnableScheduling
注解在配置类上开启对j计划任务(定时任务)的支持4@EnableWebMvc
开启web mvc的配置支持5@EnbaleConfigurationProperties
开启对@ConfigurationProperties注解配置Bean的支持。6@EnableJpaRepositories
开启对Spring Data JPA Repository的支持7@EnableTransactionManagement
开启注解式事务的支持8@EnableCaching
开启注解式的缓存支持Spring4.2新特性:
@Order:调整配置类加载顺序。
SpringMVC注解:
1@Controller
作用在类上表面这个类是SpringMVC里面的Controller,将其声明为Spring的一个Bean,Dispatcher Servlet会自动扫描注解了此注解的类,并将Web请求映射到@RequestMappin的方法上。
注意:
在声明普通Bean的时候,使用@Service,@Component,@Repository,@Controller是等同的,因为@Service,@Repository,@Controller都组合了@Component。
但是在SpringMVC声明控制器Bean的时候,只能使用@Controller
2@RequestMapping
类,方法上用来映射Web请求(访问路径和参数)、处理类和方法的。
注解在方法上的@RequestMapping路径会继承注解在类上的路径,@RequestMapping支持Servlet的request和reponse作为参数,也支持对request和response的媒体类型进行配置。
@RequestMapping 既可以作用在类级别,也可以作用在方法级别。当它定义在类级别时,标明该控制器处理所有的请求都被映射到 /favsoft 路径下。
@RequestMapping中可以使用 method 属性标记其所接受的方法类型,如果不指定方法类型的话,可以使用 HTTP GET/POST 方法请求数据,但是一旦指定方法类型,就只能使用该类型获取数据。
@RequestMapping 可以使用 @Validated与BindingResult联合验证输入的参数,在验证通过和失败的情况下,分别返回不同的视图。
@RequestMapping支持使用URI模板访问URL。URI模板像是URL模样的字符串,由一个或多个变量名字组成,当这些变量有值的时候,它就变成了URI。
3@ResponseBody
类,返回值前,方法上@ResponseBody:它的作用是将返回类型直接输入到HTTP response body中。
@ResponseBody:输出JSON格式的数据
4@RequestBody
参数前request的参数在请求体内
@RequestMapping(value = "/something", method = RequestMethod.PUT)public void handle(@RequestBody String body, Writer writer) throws IOException { writer.write(body);}如果觉得@RequestBody不如@RequestParam趁手,我们可以使用 HttpMessageConverter将request的body转移到方法参数上, HttMessageConverser将 HTTP请求消息在Object对象之间互相转换,但一般情况下不会这么做。事实证明,@RequestBody在构建REST架构时,比@RequestParam有着更大的优势。
如果觉得@RequestBody不如@RequestParam趁手,我们可以使用HttpMessageConverter将request的body转移到方法参数上,HttMessageConverser将HTTP请求消息在Object
对象之间互相转换,但一般情况下不会这么做。事实证明,@RequestBody在构建REST架构时,比@RequestParam有着更大的优势。
5@PathVariable
参数前接收路径参数。
在Spring MVC中,可以使用 @PathVariable 注解方法参数并将其绑定到URI模板变量的值上。
@PathVariable 可以有多个注解
@PathVariable中的参数可以是任意的简单类型,如int, long, Date等等。Spring会自动将其转换成合适的类型或者抛出 TypeMismatchException异常。当然,我们也可以注册支持额外的数据类型。
如果@PathVariable使用Map<String, String>类型的参数时, Map会填充到所有的URI模板变量中。
@PathVariable支持使用正则表达式,这就决定了它的超强大属性,它能在路径模板中使用占位符,可以设定特定的前缀匹配,后缀匹配等自定义格式。
@PathVariable还支持矩阵变量
6@RestController
类组合注解 =@Controller+@ResponseBody
我们经常见到一些控制器实现了REST的API,只为服务于JSON,XML或其它自定义的类型内容。
@RestController就是这样一种类型,它避免了你重复的写@RequestMapping与@ResponseBody。
@RestController用来创建REST类型的控制器。
7@EnableWebMvc
类开启对SpringMVC的配置支持,可以重写这个类的方法,配置拦截器,配置静态资源映射
8@ControllerAdvice
类1.将对于控制器的全局配置放在同一个位置
2.注解了@Controller的类的方法可以使用@ExceptionHandler,@InitBinder,@ModelAttribute注解到方法上,这对所有注解了@RequestMapping的控制器内的方法有效。
@ExceptionHandler
用于全局处理控制器里的异常。
@InitBinder
用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中。
@ModelAttribute
本来的作用是绑定键值对到Model里,此处是让全局的@RequestMapping都能获得在此处设置的键值对。
9@RequestParam
参数中@RequestParam将请求的参数绑定到方法中的参数上,如下面的代码所示。
其实,即使不配置该参数,注解也会默认使用该参数。如果想自定义指定参数的话,如果将@RequestParam的 required 属性设置为false(@RequestParam(value="id",required=false))。
10@ModelAttribute
方法或方法参数上当它作用在方法上时,标明该方法的目的是添加一个或多个模型属性(model attributes)。该方法支持与@RequestMapping一样的参数类型,但并不能直接映射成请求。控制器中的@ModelAttribute方法会在@RequestMapping方法调用之前而调用,示例如下
@ModelAttribute方法用来在model中填充属性,如填充下拉列表、宠物类型或检索一个命令对象比如账户(用来在HTML表单上呈现数据)。
@ModelAttribute方法有两种风格:一种是添加隐形属性并返回它。另一种是该方法接受一个模型并添加任意数量的模型属性。用户可以根据自己的需要选择对应的风格。
当@ModelAttribute作用在方法参数上时,表明该参数可以在方法模型中检索到。如果该参数不在当前模型中,该参数先被实例化然后添加到模型中。一旦模型中有了该参数,该参数的字段应该填充所有请求参数匹配的名称中。这是Spring MVC中重要的数据绑定机制,它省去了单独解析每个表单字段的时间。
@ModelAttribute是一种很常见的从数据库中检索属性的方法,它通过@SessionAttributes使用request请求存储。在一些情况下,可以很方便的通过URI模板变量和类型转换器检索属性。
11
@HttpEntity
HttpEntity除了能获得request请求和response响应之外,它还能访问请求和响应头,如下所示:
springboot注解:
1@ComponentScan(basePackages = "com.xzc.")
扫描2@SpringBootApplication
SpringBoot的核心注解,主要作用是开启自动配置。
@SpringBootApplication=@ComponentScan+@Configuration+@EnableAutoConfiguration
关闭特定的自动配置:@SpringBootApplication注解的exclude参数。
例如:@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class} )
3@ImportResource("classpath:ws-client.xml")
加载xml配置。4@EnableRedisHttpSession
5@Entity
注释指明这是一个实体Bean
Lombok:简化java代码注解
1@Data
注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法2@Setter
注解在属性上;为属性提供 setting 方法3@Getter
注解在属性上;为属性提供 getting 方法4@NoArgsConstructor
注解在类上;为类提供一个无参的构造方法5@AllArgsConstructor
注解在类上,为类提供一个全参的构造方法6@Log4j
注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
----JSR-250----
1@PostConstruct
用于指定初始化方法(用在方法上)2@PreDestory
用于指定销毁方法(用在方法上)3@Resource
默认按名称装配,当找不到与名称匹配的bean才会按类型装配。----------
- Spring常用注解汇总
- Spring常用注解汇总
- Spring常用注解汇总
- Spring常用注解汇总
- Spring常用注解汇总
- Spring常用注解汇总
- Spring常用注解汇总
- Spring常用注解汇总
- Spring MVC 4 常用注解汇总
- Spring MVC注解汇总
- Spring MVC注解汇总
- 【spring ----- 注解篇】 常用注解
- Java Spring 常见注解汇总
- spring常用注解
- Spring IOC 常用注解
- Spring常用注解方式
- Spring常用注解
- spring常用注解
- JAVA泛型? T K V E等代表的意思
- Replace Words问题及解法
- 线程的5种状态及其之间的切换
- Android开发笔记(一)
- 如何在BIGEMAP中打开excel、txt、dat文件
- Spring常用注解汇总
- 数组里面包含数组 数据渲染
- [ubuntu]安装并使用python 3.6及与2.7的切换
- HDU 2328 Corporate Identity(发现新大陆之KMP专题不用KMP也能过系列)
- 通过wininet获取网页源码在例子
- 嵌套滚动条
- WebService多线程并发数
- 2017hadoop大数据工程师基础进阶实战全套
- CVPR 2017 论文集锦(目标检测与目标追踪相关)