Spring注解分类及详解

Spring注解概述

(1)bean factory注解:

@Configuration       把一个类作为一个IoC容器,可理解为用xml里的标签@ComponentScan 启用类扫描,

                             与xml中作用一致@ComponentScans @Conditional 根据满足某个特定的条件创建一个特 

                             定的Bean

@Bean                   告诉被注释的方法产生一个Bean,然后交给Spring容器,用在方法上,告诉Spring容器可以从这个方法中拿到一个Bean

@Lazy                    用于指定该Bean是否取消预初始化。主要用于修饰Spring Bean类,用于指定该Bean的预初始化行为

@DependsOn          用于强制初始化其他Bean。可以修饰Bean类或方法,使用该Annotation时可以指定一个字符串数组作为参数,

                             每个数组元素对应于一个强制初始化的Bean

@Import                  支持导入配置类,也支持导入普通的java类,并将其声明成一个bean

@ImportResource     注解@ImportResource和@Value注解用来进行资源文件的读取

@Primary                在众多相同的bean中,优先使用用@Primary注解的bean

@Qualifier               指定某个bean有没有资格进行注入

@Profile                标注的组件只有当指定profile值匹配时才生效,可以通过以下方式设置profile值:

                            1、设置spring.profiles.active属性(通过JVM参数、环境变量或者web.xml中的Servlet context参数)

                            2、ApplicationContext.getEnvironment().setActiveProfiles(“ProfileName”)

                            根据实际环境设置profile值,然后被profile标注(而且value=设置值)的bean才会被注册到spring容器

@Scope                默认是单例模式,即scope="singleton"

                            singleton单例模式:全局有且仅有一个实例

                            prototype原型模式:每次获取Bean的时候会有一个新的实例

                            request:equest表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效

                            session:session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前

                                          HTTP session内有效

                            global session:作用域类似于标准的HTTP Session作用域,仅仅在基于portlet的web应用中才有意义。

                            request、session、global session使用的时候首先要在初始化web的web.xml中做如下配置:

                            Servlet 2.4及以上的web容器,仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可:


 ...


org.springframework.web.context.request.RequestContextListener



...

@PropertySource         读取properties文件

@PropertySources

@Autowired             它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除

                              set ,get方法

@Required                适用于bean属性的setter方法并且它指示,受影响的bean属性必须在配置时被填充在XML配置文件中,否则容器

                              将抛出BeanInitializationException例外

@Order                   在spring 4.0之前,@Order标记只支持AspectJ的切面排序。spring 4.0对@Order做了增强,它开始支持对装载

                              在诸如Lists和Arrays容器中的自动包装(auto-wired)组件的排序

@AliasFor                给注解的属性起别名,让使用注解时,更加的容易理解

@Component           这是一个元注解,意思是它可以用于标注其他注解,被它标注的注解和它起到相同或者类似的作用

(2)Spring mvc注解

@Controller             用于标注控制层组件

@Service                 用于标注业务层组件

@Respository           用于标注数据层组件DAO

@ControllerAdvice     通过@ControllerAdvice。我们可以将对于控制器的全局配置放置在同一个位置,注解

                               了@ControllerAdvice的类的方法可以使用@ExceptionHandler@InitBinder

                 @ModelAttribute注解到方法上,这对所有注解了@RequestMapping的控制器内的方法有效。

           @ExceptionHandler:用于全局处理控制器里面的异常。 @InitBinder:用来设置

           WebDataBinderWebDataBinder用来自动绑定前台请求参数到Model中。

           @ModelAttribute@ModelAttribute本来的作用是绑定键值对到Model里,此处是让全局的

           @RequestMapping都能获得在此处设置的键值对。

@InitBinder               用于在@Controller中标注于方法,表示为当前控制器注册一个属性编辑器或者其他,只对当前的Controller有效 @ModelAttribute        两种应用场景:

                               运用在参数上,会将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap

                               中,便于View层使用;

                               运用在方法上,会在每一个@RequestMapping标注的方法前执行,如果有返回值,则自动将该返回值加入到

                               ModelMap中;

@MatrixVariable        在传递path相关的参数是使用,利用MatrixVariable可以动态传递参照的元素id

@RequestMapping     用来处理请求地址映射,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父

                               路径

@RequestParam        用来处理请求参数映射 @RequestPart 用来处理文件上传 @RequestBody 对应的POST请求的body,body即是

                               获取的参数,如果想通过参数去获取,则要使用@RequestParams

@RequestHeader       用于映射控制器参数以请求头值的注释

@RequestAttribute     用于访问由过滤器或拦截器创建的、预先存在的请求属性

@SessionAttribute      用于访问预先存在的全局会话属性 @CookieValue用来获取Cookie中的值

@ExceptionHandler    对web的服务器端运行错误, 做统一的处理

@CrossOrigin            跨域注解

@GetMapping           简化常用的HTTP方法的映射,是@RequestMapping(method = RequestMethod.GET)的缩写

@PostMapping          组合注解,简化常用的HTTP方法的映射

@PutMapping            组合注解,简化常用的HTTP方法的映射

@DeleteMapping        组合注解,简化常用的HTTP方法的映射

@PatchMapping         组合注解,简化常用的HTTP方法的映射

@RestController         标识类作为控制器,每一个方法返回域对象pojo代替一个视图

@RestControllerAdvice 一个组件注解,异常统一处理

@ResponseBody        内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流@ResponseStatus       用于修饰一个类或者一个方法,修饰一个类的时候,一般修饰的是一个异常类@PathVariable 可以将 URL 中占

                                       位符参数绑定到控制器处理方法的入参中

@Validated                 是@Valid 的一次封装,是Spring提供的校验机制使用

@EnableWebMvc            启用spring mvc

JSR-250

@PostConstruct           注解的方法将会在依赖注入完成后被自动调用,

                                  顺序Constructor >> @Autowired >> @PostConstruct

@PreDestroy                销毁之前调用方法@Resource 注解被用来激活一个命名资源(named resource)的依赖注入

JSR-330

@Inject                       可以注入对象,在属性域上面注入、在set方法或者其他需要注入的方法上面注入、在构造器上面注入

                                  @Inject没有@required标签,强制要求对象不能为空

@Named                     可以有值,如果没有值生成的Bean名称默认和类名相同

@Max                     校验最大值

@Min                          校验最小值

@NotNull                     校验不能为空

@Size                          校验长度

@Pattern                      正则校验

@Valid                         标识校验bean,要紧挨着JavaBean,要不然不会生效的


(3)数据处理层注解

@EnableTransactionManagement             激活事务管理@Transactional 可以作用于接口、接口方法、类以及类方法上。当作用于类

                                                           上时,该类的所有 public 方法将都具有该类型的事务属性,同时,我们也可以在方法级别

                                                            使用该标注来覆盖类级别的定义

@EnableAspectJAutoProxy                       激活Aspect自动代理

@EnableCaching                                     激活数据缓存

@CacheConfig                                       在类级别上统一定义缓存名称

@Cacheable                                          主要针对方法配置,能够根据方法的请求参数对其结果进行缓存

@Caching                                             对于@Caching注解来讲,如果有两种不同的需求,都是放在同一个方法上,这种需求如果

                                                           只是使用@CacheEvict或者@CachePut是无法实现,因为他们不能多样化的作用在同一个

                                                           方法上。可以使用@Caching(evict={

                                                           @CacheEvict(“a1”),@CacheEvict(“a2”,allEntries=true)})

@CachePut                                           主要针对方法配置,能够根据方法的请求传输对其结果进行缓存,和@Cacheable不同的

                                                           是,它每次都会触发真实的方法调用

@CacheEvict                                         主要针对方法配置,能够根据一定的条件对缓存进行清空

Bean Validation 中内置的 constraint

@Null                           被注释的元素必须为 null    

@NotNull                      被注释的元素必须不为 null     

@AssertTrue                 被注释的元素必须为 true    

@AssertFalse                被注释的元素必须为 false     

@Min(value)                  被注释的元素必须是一个数字,其值必须大于等于指定的最小值    

@Max(value)                 被注释的元素必须是一个数字,其值必须小于等于指定的最大值     

@DecimalMin(value)       被注释的元素必须是一个数字,其值必须大于等于指定的最小值    

@DecimalMax(value)      被注释的元素必须是一个数字,其值必须小于等于指定的最大值     

@Size(max=, min=)        被注释的元素的大小必须在指定的范围内    

@Digits (integer, fraction)    被注释的元素必须是一个数字,其值必须在可接受的范围内     

@Past                          被注释的元素必须是一个过去的日期    

@Future                       被注释的元素必须是一个将来的日期     

@Pattern(regex=,flag=)   被注释的元素必须符合指定的正则表达式    

Hibernate Validator 附加的 constraint     

@NotBlank(message =)    验证字符串非null,且长度必须大于0    

@Email                          被注释的元素必须是电子邮箱地址     

@Length(min=,max=)       被注释的字符串的大小必须在指定的范围内    

@NotEmpty                    被注释的字符串的必须非空     

@Range(min=,max=,message=)   被注释的元素必须在合适的范围内

MyBatis

@Param 映射参数注解@Select 查询注解@Update 更新注解@Delete 删除注解@Insert 插入注解@Results 结果注解@Result 结果注解@Options 选项注解

(4)切面注解@Aspect 声明一个切面

@After                         注解切入时机为执行完成
@AfterReturning                注解切入时机为执行返回
@AfterThrowing                 注解切入时机为抛出异常
@Around                        注解切入时机为环绕
@Before                        注解切入时机为开始调用
@DeclareParents                注解引入新的方法
@Pointcut                      定义切点

(5)任务处理注解


@EnableAsync                   开启多线程,可以标注在方法、类上
@Async                         异步方法;这些方法将在执行的时候,将会在独立的线程中被执行,调用者无需等待它的完成,即可继续其他的操作
@EnableScheduling              开启对计划任务的支持,然后在要执行计划任务的方法上注解@Scheduled,声明这是一个计划任务
@Scheduled                     声明这是一个计划任务
@Schedules

你可能感兴趣的:(Spring注解分类及详解)