注解(Annotation)
至关于一种标记,在程序中加入注解就等于为程序打上某种标记,就去干相应的事,标记能够加在包、类,属性、方法,方法的参数以及局部变量上。java
@interface A { }
@A class B { @A String field; @A void method(){ } }
注解能够加在类、成员变量、成员方法上。web
注解是JDK1.5以后才提供的特性,三个常见注解:spring
@Deprecated
意思是“废弃的,过期的”@Override
意思是“重写、覆盖”@SuppressWarnings
意思是“压缩警告”首先解释一下什么是元注解,元注解就是注解注解的注解。数据库
提及来有点拗口,能够这样理解,看下面的例子:服务器
/** * 这是一个自定义的注解(Annotation)类 在定义注解(Annotation)类时使用了另外一个注解类Retention * 在注解类上使用另外一个注解类,那么被使用的注解类就称为元注解 */ @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.TYPE }) public @interface MyAnnotation { }
这是咱们自定义的注解MyAnnotation
,在咱们自定义的注解注解类中,咱们使用了这两个注解@Retention
、@Target
,这两个注解就是元注解——注解(动词)注解(注解类)的注解(名词)。websocket
J2SE5.0版本在 java.lang.annotation提供了四种元注解,专门注解其余的注解:session
略app
首先看一下带有注解的Java的执行过程,分为下面三个阶段异步
这个@Retention
元注解就是表示注解的生命周期的,他有三个属性值socket
@Target
元注解决定了一个注解能够标识到哪些成分上,如标识在在类身上,或者属性身上,或者方法身上等成分,@Target
默认值为任何元素
略
用来修饰一个非静态的void()方法.并且这个方法不能有抛出异常声明。
被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,而且只会被服务器调用一次,相似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数以后,init()方法以前运行。
用来修饰一个非静态的void()方法.并且这个方法不能有抛出异常声明。
被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,而且只会被服务器调用一次,相似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法以后运行,在Servlet被完全卸载以前。
该注解用于监听器
监听器类应该实现下面接口之一:
对Request的监听有ServletRequestListener和ServletRequestAttributeListener。
对Session的监听有HttpSessionListener和HttpSessionAttributeListener。
对于ServletContext的监听器有ServletContextListener和ServletContextAttributeListener。
JPA环境下中使用
@MappedSuperclass
注解用在实体类的父类上@MappedSuperclass
标识的类表示其不能映射到数据库表,由于其不是一个完整的实体类,可是它所拥有的属性可以让继承其的子类映射到数据库表中@MappedSuperclass
标识得类不能再有@Entity或@Table注解注解标注在父类上不会被子类所继承 我也仅仅是会用,说的不是太明白
@Component
、@Responsity
、@Service
以及@Controller
;@Autowired
和@Resource
引入该类对象时,并不须要我本身去new一个,spring容器会自动的将我须要对象创造出来。这就是一般所说的依赖注入和控制反转。泛指组件,当组件很差归类的时候,咱们可使用这个注解进行标注。通常公共的方法我会用上这个注解
@Scheduled
注解是Spring提供的定时任务调度的注解,该注解注解在方法上,可定义cron表达式定时执行,也可自定义延时时间执行
在使用@Scheduled
注解的时候,要确保已经开启Spring此功能,开启此功能只须要将@EnableScheduling
注解到启动类上便可
在使用spring data jpa的时候,每一个实体类有须要实现的相同的方法,就能够单独抽取出来,放在一个公共的接口MyRepository中,并这个类继承了jpa的相关Repository接口或类,由MyRepository接口来衔接jpa的相关操做,其余实体类须要实现的操做就直接继承MyRepository接口,不用每次都去继承jpa的相关接口或类啦,因此这个公共接口就须要这个注解@NoRepositoryBean来标识。
Dao层的注解,若是继承了相关的Repository或者配置了bean写不写均可以
@EnableWebSocketMessageBroker注解用于开启使用STOMP协议来传输基于代理(MessageBroker)的消息,这时候控制器(controller)开始支持@MessageMapping,就像是使用@requestMapping同样。
注解@EnableJms设置在@Configuration类上,用来声明对 JMS 注解的支持。
注解在配置类上, 开始异步任务支持
注解在类或者方法上, 来声明一个异步任务
定义Spring容器加载Bean的顺序
websocket的@RequestMapping
用于类;表示标识这个类是swagger的资源
用于方法;表示一个http请求的操做
用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等)
用于类 ;表示对类进行说明,用于参数用实体类接收
均可省略
用于方法,字段; 表示对model属性的说明或者数据操做更改
用于类或者方法上,能够不被swagger显示在页面上
用于方法 表示单独的请求参数
用于方法,包含多个 @ApiImplicitParam