Java APT 和Java SPI机制

前言

最近半年一直在做微服务开发,所使用的框架中用到了一些技术是之前未曾见过的,所以趁不忙之际赶紧学习一下,记录下来。我们框架中用到了java的apt和spi机制,所以在此记录一下两个概念的基本用法和使用场景。

Java APT

APT(Annotation Process Tool),注解处理工具。apt被设计为操作java源文件,也就是编译时对注解进行扫描并处理,按照一定的规则,生成相应的java文件。在java8之前,apt相关的源码(com.sun.mirror.apt.*)都在tools.jar里,如果要使用需要将tools.jar加到Libraries下。java8开始,相关代码移到了javax.annotation.processing和javax.lang.model下,相关的类也发生了变化,使用更加方便。下面说下apt在我们微服务框架中的使用场景。

@AutoService注解,可能做Android开发的都用过,这个注解是google的一个开源jar包中的注解(https://github.com/google/auto),用于生成java SPI描述文件,而我们框架手动实现了一个@AutoService自定义注解,实现大致过程如下:

1、先创建一个自定义注解,@Retention(RetentionPolicy.SOURCE)说明这个注解只在源码阶段生效,编译后就不再生效了。

import java.lang.annotation.*;

/**
 * An annotation for service providers as described in {@link java.util.ServiceLoader}. The {@link
 * AutoServiceProcessor} generates the configuration files which
 * allows service providers to be loaded with {@link java.util.ServiceLoader#load(Class)}.
 *
 * <p>Service providers assert that they conform to the service provider specification.
 * Specifically, they must:
 *
 * <ul>
 * <li>be a non-inner, non-anonymous, concrete class
 * <li>have a publicly accessible no-arg constructor
 * <li>implement the interface type returned by {@code value()}
 * </ul>
 *
 * @author google
 */
@Documented
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.TYPE)
public @interface AutoService {
	/**
	 * Returns
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值