关于注解:注解式项目开发详细解析Java中各个注解的作用和使用方式
@Target作用: 指明了润饰的这个注解的应用范畴, 即被形容的注解能够用在哪里 @Target(ElementType.Type)ElementType取值的类型: TYPE: 类,接口或者枚举FIELD: 域,蕴含枚举常量METHOD: 办法PARAMETER: 参数CONSTRUCTOR: 构造方法LOCAL_VARIABLE: 局部变量ANNOTATION_TYPE: 注解类型PACKAGE: 包 @Retention作用: 指明润饰的注解的生存周期, 即会保留到哪个阶段RetentionPolicy的取值类型有三种: SOURCE: 源码级别保留,编译后即抛弃CLASS: 编译级别保留,编译后的class文件中存在,在jvm运行时抛弃,这是默认值RUNTIME: 运行级别保留,编译后的class文件中存在,在jvm运行时保留,能够被反射调用 @Documented作用: 指明润饰的注解,能够被例如javadoc此类的工具文档化 只负责标记没有成员取值 @Inherited作用: 容许子类继承父类中的注解@Inherited须要和@AliasFor一起应用: 在子注解对应的属性应用@AliasFor 注解是能够继承的,然而注解是不能继承父注解的属性也就是说,在类扫描时的注解的属性值仍然是父注解的属性值,而不是自定义注解的属性值须要在注解的属性上应用@AliasFor @ComponentScan作用: 定义扫描的门路从中找出标识了须要拆卸的类主动拆卸到spring的bean容器中默认会扫描该类所在的包下所有的配置类@ComponentScan中的参数类型: value: 用于对指定包的门路进行扫描basePackages: 用于指定包的门路进行扫描,用法和value一样.倡议应用valuebasePackageClasses: 用于对指定某个类的所在的包的门路进行扫描nameGenerator: 用于为Spring容器中的检测到bean组件命名useDefaultFilters: 是否开启对 @Component,@Repository,@Service,@Controller的类进行检测excludeFilters: 依照过滤条件进行排除 FilterType.ANNOTATION: 依照注解FilterType.ASSIGNABLE_TYPE: 依照给定的类型FilterType.ASPECTJ: 应用ASPECTJ表达式FilterType.REGEX: 应用正则表达式FilterType.CUSTOM: 依照自定义规定includeFilters: 依照过滤条件进行蕴含 FilterType.ANNOTATION: 依照注解FilterType.ASSIGNABLE_TYPE: 依照给定的类型FilterType.ASPECTJ: 应用ASPECTJ表达式FilterType.REGEX: 应用正则表达式FilterType.CUSTOM: 依照自定义规定 @Filter作用: 配置过滤条件的过滤器注解@Filter中的参数类型: typeclass @interface作用: 自定义注解主动继承java.lang.annotation.Annotation接口,由编译程序主动实现其余细节在定义注解时,不能继承其余的注解或接口@interface用来申明一个注解: 其中的每一个办法实际上是申明一个配置参数办法的名称就是参数的名称办法的返回值类型就是参数的类型返回值类型只能是根本类型,Class,String,enum能够通过default来申明参数的默认值定义注解的格局: public @interface 注解名 {定义体}注解参数反对的数据类型: 根本数据类型: int,float,boolean,byte,double,char,long,shortString类型Class类型enum类型Annotation类型以上类型组合的数组Annotation类型中参数设定规定: 只能用public或default默认拜访权润饰:参数成员只能用根本类型byte,short,char,int,long,float,double,boolean八种根本数据类型和String,Enum,Class,annotations等数据类型,以及这一些类型的数组如果只有一个参数成员,最好把参数名称设为value,后加小括号注解元素的默认值: 注解元素必须有确定的值要么在定义注解的默认值中指定,要么在应用注解时指定,非根本类型的注解元素的值不可为null因而应用空字符串或0作为默认值束缚这个束缚使得处理器很难体现一个元素的存在或缺失的状态: 因为每个注解的申明中,所有元素都存在,并且都具备相应的值为了绕开这个束缚,只能定义一些非凡的值(比方空字符串或者正数),示意某个元素不存在 @AliasFor作用: 为注解的属性增加别名在同一个注解内,对两个不同的属性一起应用,互为别名: 无论为哪个属性名设置属性值,另一个属性名也是同样的属性值互为别名的属性值必须雷同,否则会报错属性必须要有默认的属性值public @interface RequestMapping { @AliasFor("path") // 此时path和value值必须是一样的,否则会报错 String[] value() default {}; @AliasFor("value") // 此时path和value值必须是一样的,否则会报错 String[] path() default {}; }显式的笼罩元注解中的属性: ...