Java——注解(Annotation)学习笔记

注解的作用:

  • 不是程序本身,可对程序作出解释(注释也有此作用)
  • 可以被其他程序(如编译器)读取(与注释的区别)

常用的注解:

JDK自带注解:
  • @Override 重写方法
  • @Deprecation 表示方法已经过时,方法上有横线,使用时会有警告。
  • @SuppviseWarnings 压制警告
    • deprecation 使用了不赞成使用的类或方法时的警告
    • unchecked 执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型。
    • fallthrough 当 Switch 程序块直接通往下一种情况而没有 Break 时的警告。
    • path 在类路径、源文件路径等中有不存在的路径时的警告。
    • serial 当在可序列化的类上缺少 serialVersionUID 定义时的警告。
    • finally 任何 finally 子句不能正常完成时的警告。
元注解
  • @Target({XXX,XXX})   注解的作用域
    • ElemenetType.CONSTRUCTOR     构造器声明
    • ElemenetType.FIELD          域声明(包括 enum 实例)
    • ElemenetType.LOCAL_VARIABLE    局部变量声明
    • ElemenetType.METHOD         方法声明
    • ElemenetType.PACKAGE        包声明
    • ElemenetType.PARAMETER       参数声明
    • ElemenetType.TYPE          类,接口(包括注解类型)或enum声明
    • ElementType.ANNOTATION_TYPE   注解
  • @Retention(XXX) 注解的作用级别
    • RetentionPolicy.SOURCE       注解将被编译器丢弃
    • RetentionPolicy.CLASS        注解在class文件中可用,但会被VM丢弃
    • RetentionPolicy.RUNTIME       JVM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。
Spring常用注解

  IOC

  • @Component(value=”….”) 相当于配置方式中的id=”…”,即给这个类声明一个id
  • @Controller //Web层类
  • @Service //业务层
  • @Repository //持久层(后三个为Component的扩展,现阶段完全等效
  • @scope(value=”…”) value取值:
    • singleton单例
    • prototype多例
  • @Value(value=”…”) 属性注入(基本数据类型和String)
  • @Autowired 属性注入(对象注入,自动)
  • @Resource(name=”…”) 属性注入(对象注入,常用,name的值为注入类的id,可省略)

  AOP

  • @Aspect 切面,用于增强类上
  • @Before(value = “…”) 前置增强,用于切入点上(增强的方法) value取值:
    • execution(* com.aoptest.test2.Student.Show(..)) 所有所属类型(指private、public等所有)com.aoptest.test2包下Student类中Show()方法的所有方法(考虑重载)
    • execution(* com.aoptest.test2.Student.*(..)) Student类中所有方法
    • execution(* *.*(..)) 项目下所有方法
  • @Around 环绕增强,可实现方法执行前后操作,需要在方法内执行point.proceed(); 并返回结果。
  • @AfterReturning 后置增强
  • @AfterThrowing 异常增强
  • @After 后置增强
(其他常用注解更新中…)

自定义注解(@interface)

@Target(value = {ElementType.TYPE}) //作用域   类
@Retention(RetentionPolicy.RUNTIME) //保留策略  运行时有效
public @interface Table {
    String value();
}
  • 用java的反射机制使用注解

猜你喜欢

转载自blog.csdn.net/qq_37969433/article/details/80330420