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才会按类型装配。

----------

原创粉丝点击