• 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);
      ....可以进行一系列处理,例如:动态暴露接口等
    }
    }
     


  • 相关阅读:
    一些 Ubuntu 使用的小技巧
    体验 Web 自动化测试工具 Selenium
    CentOS 7 上安装 Nginx
    Windows查看端口占用情况
    Windows远程登录提醒:由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开。请跟服务器管理员联系。
    Vue动态的改变css样式
    centos7 U盘安装卡在 starting dracut initqueue hook Reached target Basic System
    用tsc编译ts文件的时候报错,tsc : 无法加载文件,因为在此系统上禁止运行脚本;
    Linux修改SSH默认的端口号
    Centos编译安装新版本Git
  • 原文地址:https://www.cnblogs.com/collin/p/10842840.html
Copyright © 2020-2023  润新知