zoukankan      html  css  js  c++  java
  • spring 自定义注解

    1、jdk1.5内置了三种标准注解

    @Override,表示当前的方法定义将覆盖超类中的方法。
    
    @Deprecated,使用了注解为它的元素编译器将发出警告,因为注解@Deprecated是不赞成使用的代码,被弃用的代码。
    
    @SuppressWarnings,关闭不当编辑器警告信息。
    

    2、还提供了4种专门负责新注解的创建:

    @Target:

    @Target –注解用于什么地方,默认值为任何元素,表示该注解用于什么地方。可用的ElementType指定参数
    ● ElementType.CONSTRUCTOR:用于描述构造器
    ● ElementType.FIELD:成员变量、对象、属性(包括enum实例)
    ● ElementType.LOCAL_VARIABLE:用于描述局部变量
    ● ElementType.METHOD:用于描述方法
    ● ElementType.PACKAGE:用于描述包
    ● ElementType.PARAMETER:用于描述参数
    ● ElementType.TYPE:用于描述类、接口(包括注解类型) 或enum声明

    @Retention

    表示需要在什么级别保存该注解信息。

    什么时候使用该注解,即注解的生命周期,使用RetentionPolicy来指定
    ● RetentionPolicy.SOURCE : 在编译阶段丢弃。这些注解在编译结束之后就不再有任何意义,所以它们 不会写入字节码。@Override, @SuppressWarnings都属于这类注解。
    ● RetentionPolicy.CLASS : 在类加载的时候丢弃。在字节码文件的处理中有用。注解默认使用这种方式
    ● RetentionPolicy.RUNTIME : 始终不会丢弃,运行期也保留该注解,因此可以使用反射机制读取该注解的信息。我们自定义的注解通常使用这种方式。

    @Document

    将注解包含在Javadoc中

    @Inherited

    允许子类继承父类中的注解

    1.定义

    @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented()
    public @interface MyAnnotation { String name() default ""; //如果变量为value,后面使用是可以不指定value }


    2.使用
    @MyAnnotation(name="CC")  // @MyAnnotation("cc")
    public @interface MyAnnotation {
        String name() default "";
    }

    3.现在就可以对注解的类进行操作,有2中方式
    第一种.
      实现
    BeanFactoryPostProcessor接口---> 可以在spring的bean创建之前,修改bean的定义属性。也就是说,Spring允许BeanFactoryPostProcessor在容器实例化任何其它bean之前读取配置元数据,并可以根据需要进行修改,
    @Component
    public class HessianInterfaceConfig implements BeanFactoryPostProcessor{
    private final Log log = LogFactory.getLog(getClass());

    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
    HashMap<String, String> interfaceMap = new HashMap<>();
    String[] beanNames = beanFactory.getBeanNamesForAnnotation(MyAnnotation.class);
      ....可以进行一系列处理,例如:动态暴露接口等
    }
    }
     


  • 相关阅读:
    nodeJS 菜鸟入门
    Chrome 鲜为人知的秘籍(内部协议)&&Chrome功能指令大全
    前端工作面试问题
    ECharts模块化使用5分钟上手
    AppCan 之初体验
    Phonegap 环境配置
    【位运算】判断一个数是否为2的n次方
    【位运算】移位操作实现乘法运算
    O(1)时间复杂度求栈中最小元素
    Java Socket UDP编程
  • 原文地址:https://www.cnblogs.com/collin/p/10842840.html
Copyright © 2011-2022 走看看