zoukankan      html  css  js  c++  java
  • AutoService

    What AutoService?

    在使用自定义注解和注解处理器时,编写完后,会忘记创建注解处理器的描述文件,于是找到了@AutoService

    @AutoService是google为注解处理器提供的注解,其作用是编译时在classpath下生成注解处理器的描述文件。即,生成Processor实现类的描述文件(META-INF/services/...)

    [AutoService]项目地址:https://github.com/google/auto/tree/master/service

    [AutoService-Demo] 示例

    例如:

    eg

    示例代码

    • pom.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      
          <groupId>cn.lnkdoc</groupId>
          <artifactId>AutoService-Demo</artifactId>
          <version>1.0.0</version>
      
          <properties>
              <maven.compiler.source>8</maven.compiler.source>
              <maven.compiler.target>8</maven.compiler.target>
              <auto-service.version>1.0</auto-service.version>
          </properties>
      
          <dependencies>
              <dependency>
                  <groupId>com.google.auto.service</groupId>
                  <artifactId>auto-service-annotations</artifactId>
                  <version>${auto-service.version}</version>
              </dependency>
          </dependencies>
      
          <build>
              <plugins>
                  <plugin>
                      <artifactId>maven-compiler-plugin</artifactId>
                      <version>3.8.1</version>
                      <configuration>
                          <annotationProcessorPaths>
                              <path>
                                  <groupId>com.google.auto.service</groupId>
                                  <artifactId>auto-service</artifactId>
                                  <version>${auto-service.version}</version>
                              </path>
                          </annotationProcessorPaths>
                      </configuration>
                  </plugin>
              </plugins>
          </build>
      
      </project>
      
    • MyProcessor.java
      package cn.lnkdoc.examples.autoservice;
      
      import com.google.auto.service.AutoService;
      import javax.annotation.processing.AbstractProcessor;
      import javax.annotation.processing.Processor;
      import javax.annotation.processing.RoundEnvironment;
      import javax.lang.model.element.TypeElement;
      import java.util.Set;
      
      /**
       * .
       *
       * @author langkye
       * @date 2021/9/4
       */
      @AutoService(Processor.class)
      public class MyProcessor extends AbstractProcessor {
          /**
           * {@inheritDoc}
           *
           * @param annotations
           * @param roundEnv
           */
          @Override
          public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
              //TODO
              return false;
          }
      }
      

    相关的技术

    SPI、[ APT(Annotation-Processing Tool ) ] 、[JSR269(Pluggable Annotation Processing API)]

    :APT从JDK1.8起已经被移除(JEP 117: Remove the Annotation-Processing Tool (apt) ),转而使用标准化的JSR269API:
    apt

  • 相关阅读:
    【linux 爱好者群】程序猿的那些聊天记录
    开发技巧记录
    tcmalloc 内存分析
    mktime很慢就自己去实现一个吧
    bash变量常用技巧
    文本处理sed常用操作
    【TED】如何掌握你的自由时间
    vim粘贴代码问题
    工作方式的反思-20170319
    【one day one linux】find 用法详解小记
  • 原文地址:https://www.cnblogs.com/langkyeSir/p/15226338.html
Copyright © 2011-2022 走看看