经常使用注解整理

Spring 注解

@RequestMapping 是接受前台请求url的,在class和方法上均可以使用。java

@ResponseBody 将返回的对象经过转换器转换成JSON或XML的形式返回。会将数据写入到response对象的body区中。spring

@RequestBody   接受参数时使用数据库

@Autowired  至关于一个get方法,完成自动装配动做,将组件扫描获得的bean和他们的依赖装配在一块儿。与@Resource相似,对成员变量,方法,构造函数进行标注,来完成自动装配的工做。只按照byType的策略进行注入。默认状况下它要求依赖对象必须存在,若是容许null只,能够设置它的required属性为false.若是想按照byName来进行注入,可结合@Qualifier一块儿使用。缓存

@Bean   产生bean,并放在Spring容器当中,通畅放在方法上。主要用在@Configuration中,也可用在@Component中。 用来代替 XML 配置文件里面的 <bean ...> 配置。并发

@Target  用于自定义注解,经过ElementType来指定注解可以使用范围的枚举集合 app

@Repository  注解可标记在任何类上,用来代表该类是用来执行数据库相关操做的,并支持自动处理操做数据库产生的异常。框架

@Resource     作bean依赖注入时候使用,可是@Resource并非spring的注解,它的包是javax.annotation.Resource,须要导入,Spring支持。默认按照 byName自动注入。有两个重要属性,name&type,Spring将@Resource注解的name属性解析为bean的名字,而type属性解析为bean的 类型。因此,若是使用name属性,则使用byName的自动注入策略,而是用type属性时,则使用buType的自动注入策略。若是既不指定 name,也不指定type,默认name。 装配顺序:jvm

  1. 若是同时指定了name和type,则从Spring上下文中找到惟一匹配的bean进行装配,找不到则抛异常。
  2. 若是指定了name,则从上下文查找名称(id)匹配的bean进行装配,找不到则抛异常。
  3. 若是指定了type,则从上下文查找相似匹配的惟一bean进行装配,找不到或找到多个,抛异常。
  4. 若是既没有指定name也没指定type,则按照byName的方式去装配,若是没有匹配,则回退为一个原始类型进行匹配,匹配则自动装配。

@Cacheable   能够标记在一个方法上,也能够标记在类上。标记方法上时表示该方法是支持缓存的,当标记在一个类上时,表示该类下全部的方法都支持缓存。Spring缓存经过键值对存储。@Cacheable可指定三个属性,value,key,condition.  condition指定发生的条件。Spring每次执行前都会检查一下cache中是否有相同的key的缓存元素,若是存在就再也不执行该方法,而是从缓存中获取结果进返回,不然才会执行,并将结果存入指定缓存中。函数

@CachePut      与@Cacheable相同,也可声明一个方法支持缓存功能,可是不会在执行前去缓存中检查有没有以前执行过的结果,而是每次都会执行该方法并将执行结果以键值对的形式 存放到指定缓存中。ui

@CacheEvict     是用来标注在须要清除缓存元素的方法或类上的。当标记在一个类上时表示其中全部的方法的执行都会触发缓存的清除操做。@CacheEvict能够指定的属性有value、key、condition、allEntries和beforeInvocation。其中value、key和condition的语义与 @Cacheable对应的属性相似。即value表示清除操做是发生在哪些Cache上的(对应Cache的名称); key表示须要清除的是哪一个key,如未指定则会使用默认策略生成的key;condition表示清除操做发生的条件。 allEntries是boolean类型,表示是否须要清除缓存中的全部元素。默认为false,表示不须要。当指定了allEntries为true时,SpringCache将忽略指定的key。有的时候咱们须要Cache一下清除全部的元素,这比一个一个清除元素更有效率; 清除操做默认是在对应方法成功执行以后触发的,即方法若是由于抛出异常而未能成功返回时也不会触发清除操做。使用beforeInvocation能够改变触发清除操做的时间,当咱们指定该属性值为true时,Spring会在调用该方法以前清除缓存中的指定元素;

@Caching         可让咱们在一个方法或者类上同时指定多个Spring Cache相关的注解。其拥有三个属性:cacheable、put和evict,分别用于指定@Cacheable、@CachePut和@CacheEvict。

@PersistJobDataAfterExecution    告诉Quartz在任务执行成功完毕以后(没有抛出异常),修改JobDetail的JobDataMap备份,以供下一个任务使用。若是使用了该注解的话,强烈建议同时使用@DisallowConcurrenExecution注解,以免两个一样的job并发执行的时候产生的存储数据迷惑。

@DisallowConcurrenExecution        能够添加到你的任务类中,它会告诉Quartz不要执行多个任务实例。

@ModelAttribute    Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了 @ModelAttribute 的方法。 在方法的入参前使用 @ModelAttribute 注解: -能够从隐含对象中获取隐含的模型数据中获取对象,再将请求参数–绑定到对象中,再传入入参;

@Retention()   自定义注解,有三种状态RetentionPolicy.SOURCE,  RetentionPolicy.CLASS,   RetentionPolicy.RUNTIME。 SOURCE 注解只保留在源文件,当java编译成class文件时,注解被抛弃。 CLASS 注解被保留到CLASS文件中,但jvm加载class时被遗弃,这是默认的声明周期。 RUNTIME 注解不只被保留到class文件中,jvm加载class文件后,仍然存在。

@Inject 实现依赖注入,把受管理的bean注入到由容器管理的其余资源中。

@Entity   说明这个class是一个实体类,而且默认使用orm的规则,即class名即为数据库对应表名,class字段名对于表中字段名。@Entity也指明这是一个实体Bean。

@EneityScan 会自动扫描指定包下的所有标有@Entity 的类。

@SpringBootApplication 该类为 spring boot 项目启动类中的核心注解。用于Spring boot的开启,该注解由三个注解组成

  • @Configuration
  • @ComponentScan
  • @EnableAutoConfiguration

前两个是Spring 自带的,最后一个是Spring Boot核心的注解。源码以下

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),        
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {    ...}
复制代码

@Configuration

org.springframework.context.annotation.Configuration

这是Spring 3.0 添加的一个注解,用来代替applicationContext.xml 配置文件,全部这个配置文件里面能作到的事情均可以经过这个注解所在类进行注册。(注意:该注解是Spring Boot最核心的注解之一!!!)

@ImportResource
若是有些类的注册方式配置不了的,能够经过这个注解引入额外的XML配置文件,有些老的配置文件没法经过@Configuration方式配置的很是管用。

@Import 用来引用额外的一个或多个@Configuration修饰的配置文件类。

@SpringBootConfiguration 这个注解就是 @Configuration注解的变体,只是用来修饰是Spring Boot配置而已,或者可利于Spring boot 后续的扩展,源码以下

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {}
复制代码

@ComponentScan

org.springframework.context.annotation.ComponentScan

这是Spring 3.1 添加的一个注解,用来代替配置文件中的component-sacn 配置,开启组件扫描,即自动扫描包路径下的@Component 注解进行注册bean实例到context中。 另外,@CompontentScans 是可重复注解,便可以配置多个,用来配置注册不一样的子包。(注意:该注解是Spring Boot最核心的注解之一!!!)

Spring 是一个依赖注入的框架。全部的内容都是关于bean的定义和其依赖关系。 定义Spring的第一步是使用正确的注解:@ComponentScan @Service @Repository 可是,Spring不知道你定义了某个bean,除非他知道哪里能找到这个bean。 ComponentScan 作的事情就是告诉Spring从哪里找到bean。 由你来定义哪些包须要被扫描。一旦你指定了,Spring将会在被指定的包及其下级的包中寻找bean。

ComponentScan 和 Component 的区别(它们使用的目的不同):

  • 在某个类上使用@Component注解,就表示当须要建立类时,这个被注解的类是一个候选类。就是举手
  • @ComponentScan 用于扫描指定包下的类,就像看一下哪些类举手了

@EnableAutoConfiguration

org.springframework.boot.autoconfigure.EnableAutoConfiguration

看全路径就知道,这是Spring boot 诞生时添加的注解,用来提供自动配置,上面的两个都是spring-context 包下的,不属于Spring boot ,因此Spring 3.0 以后的去XML配置方式已经为Spring boot埋下了伏笔。(注意:该注解是Spring Boot最核心的注解之一!!!)

@Component 把普通pojo实例化到spring容器中,至关于配置文件中的 。 泛指各类组件,就是说当咱们的类不属于各类归类的时候(不属于@Controller、@Services等的时候),咱们就可使用@Component来标注这个类。

相关文章
相关标签/搜索