Java注解
又称为java标注,是一种注释机制。英文为Java Annotation
java标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。java虚拟机可以保留标注内容,在运行时可以获取到标注内容。
所在位置:Java定义了7个注解,3个在java.lang中,4个在java.lang.annotation中。
@起手,一个方法上可以拥有多个不同的注解。
通过在方法上使用@Test注解后,在运行该方法时,测试框架会自动识别该方法并单独调用,@Test实际上是一种标记注解,起标记作用,运行时告诉测试框架该方法为测试方法。而对于@Deprecated和@SuppressWarnings("uncheck"),则是Java本身内置的注解,在代码中,可以经常看见它们,但这不是一件好事,毕竟当方法或类上面有@Deprecated注解时,说明该方法或是类已经过期不建议再用,@SuppressWarnings则表示忽略指定警告,比如@SuppressWarnings("uncheck"),这就是注解的最简单的使用方式,那么下面我们就来看看注解定义的基本语法。
public @interface 注解名称{ 属性列表; }
元注解就是标记其他注解的注解。@Target用来约束注解可以应用的地方,其中ElementType时枚举类型。注解只有成员变量,没有方法。
分类,注解可以分为三类:自定义注解,JDK内置注解,第三方框架提供的注解。
注解作用:注解时写给程序看的,更像一个标签,贴在一个类,方法或者字段上。目的是为当前读取该注解的程序提供判断依据及少量附加信息。其实普通的工具类不过是主人的玩具罢了,被贴上各种标签,方便主要管理类对工具类更好地认识,更好地压榨。俗话说得好,知人知面不知心,如果你这个类的方法都被主类看得一清二楚,那你连底裤都被看穿了,根本就是玩具了。对主类的好处来说就是可以进一步控制你。
具体对于主类的作用有以下几部分:
1、编译检查,例如@SuppressWarnings @Deprecated @Override
2、在反射中使用
3、根据Annotation生成帮助文档
4、能够帮忙查看查看代码
AOP 常用注解
@Before:在连接点前织入
@AfterReturning:在执行完return之后织入
@Around:在连接点前后分别织入,相当于Before和AfterReturning
@AfterThrowing:抛出异常时,在执行完throw后织入
@After(finally):抛出异常时,在执行完finally后织入
元注解
@Retention:保留期,存活事件,针对注解。取值有Source,只在源码阶段保留,编译时丢弃。class,只保留到编译进行的时候,不会加载到JVM中。runtime,保留到程序运行的时候,会被加载到JVM,程序运行时可以获取。
@Documented:文档有关。作用是将注解中的元素包含到javadoc中去。
@Target:制定了注解运用的地方。原本标签可以贴到任意地方,但是@Target修饰后,只能张贴到特定地方。取值有
ElementType.ANNOTATION_TYPE,给注解的注解。
ElementType:CONSTRUCTOR,构造方法注解。
ElementType.FIELD,给属性的注解。
ElementType.LOCAL_VARIABLE,给局部变量的注解。
ElementType.METHOD,给方法的注解。
ElementType.PACKAGE,给一个包进行注解。
ElementType.PARAMETER,可以给一个方法内的参数进行注解。
ElementType.TYPE,可以给一个类型进行注解,比如,类,接口,枚举。
@Inherited:如果一个超类被@Inherited注解过的注解进行注解的话,那么它的子类没有被任何注解应用的话,那么这个子类就继承了超类的注解。相当于遗传性疾病,父亲类得了儿子类也得,当然儿子有其他病那么Inherited就会放他一马。
@Repeatable:自然可重复。通常注解得值可以取多个得时候用。不太明白。括号后面跟容器注解,容器注解相当于注解的集合,它本身也是一个注解。
常用注解
@Deprecated过时元素
@Override提示子类要重写父类被override的方法
@SuppressWarnings阻止警告,什么时候用不知道
@SafeVarargs目的是提醒开发者不要用参数做一些不安全的操作
注解分类
类注解(修饰一个类,创建bean实例)
原生注解:@Component
衍生注解:@Service(service层注解) @Controller(controller实现类注解) @Repository(dao层标注)
属性注解(修饰属性,依赖注入)
普通属性:@value
对象类型属性:@Autowired(根据对象类型属性注入) @Qualifier(根据属性名称进行注入) @Resource(根据类型或名称注入)
配置类注解(用来替代XML配置文件)
@Configuration()作为配置类替代xml配置文件
@ComponentScan(basePackages={“com.xxx.spring.demo3”})开启组件扫描,不懂
浙公网安备 33010602011771号