当前位置: 首页 > news >正文

重庆做网站及优化报价中国新闻社是事业编制吗

重庆做网站及优化报价,中国新闻社是事业编制吗,邯郸集团网站建设,wordpress社区聊天室通过在编译期间,修改Java的AST(Abstract Syntax Tree)树,可以往类中,添加/修改(覆盖)方法、属性等。 现在比较常见的三方依赖例子有:Lobbok的Data可以生成get、set方法,Sl4j2可以生成静态常量l…

通过在编译期间,修改Java的AST(Abstract Syntax Tree)树,可以往类中,添加/修改(覆盖)方法、属性等。

现在比较常见的三方依赖例子有:Lobbok的@Data可以生成get、set方法,@Sl4j2可以生成静态常量log。

这篇文章,主要通过代码展示如何生成get、set方法。

编写一个只在编译期存在的注解:

import java.lang.*;@Target({ElementType.TYPE})
@Retention(RetentionPolicy.SOURCE)
public @interface Data {    }

注解增强器

Java 编译器对注解的操作,是通过继承AbstractProcessor来实现的。如下是一个添加setter方法:

流程:

  1. 初始化参数操作,见init方法
  2. 在process方法中。生成方法。
  3. 先获取注解元素集合:
  4. 将注解元素转成class定义元素集合:
  5. 最后遍历class元素集合,获取其属性,并生成方法,修改dsfs树。

过程代码涉及信息泄密,忽略。

配置注解增强器

遵循SPI(Service Provider interface),在resources/META-INF/services中配置注解增强器,项目结构结构如下:
先忽略

文件的内容如下,如果有多个增强器,按行配置即可:

incremental.annotation.processors:

com.huawei.fbb.cool.aspect.cool.data.DataProcessor,isolating1

javax.annotation.processing.Processor:

com.huawei.fbb.cool.aspect.cool.data.DataProcessor

效果

参考@Data编译后的class文件

补充说明

由于是编译时注解,注解增强器,一定要单独一个项目(项目A),然后打包给其它服务引用(项目B)。

项目A的pom:

    <dependencies><dependency><groupId>com.sun</groupId><artifactId>tools</artifactId><version>1.8</version><scope>system</scope><systemPath>${java.home}/../lib/tools.jar</systemPath></dependency></dependencies><build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration><executions><execution><id>default-compile</id><configuration><compilerArgument>-proc:none</compilerArgument></configuration></execution><execution><id>compile-project</id><phase>compile</phase><goals><goal>compile</goal></goals></execution></executions></plugin></plugins></pluginManagement></build>

其中关于配置,可以用谷歌的 AutoService

当前缺陷

由于往AST插入方法元素,没有判断是否依据存在此类方法,所以很可能覆盖掉之前类中已经存在的方法

解决

增加方法之前,最好先判断一下是否已经含有这个的方法,如果有,就不插入。

http://www.yayakq.cn/news/981067/

相关文章:

  • 湖州企业网站开发公司概念网站源码
  • 上海网络平台网站建设太原网站制作网页
  • 怎样在外管局网站做延期付款怎么做移动端网站计算像素
  • 专业的集团网站设计公司wordpress 文章图片自动添加图片
  • 优秀网站图标网站注册页面设计
  • 荣成市建设局网站是什么十大网站app软件
  • 黑龙江 网站建设创建自己网站
  • 做英文简历的网站ps做网站一般用多大字体
  • 郑州网站建设推广win10使用dw做网站
  • 网站开发设计总结及心得体会域名出售后被用来做非法网站
  • 对网站开发语言的统计瑞安商业网站建设
  • 电子网站开发技术包括简约创意男装字体logo设计
  • 济南最好的网站制作公司哪家好一流高职院校建设计划项目网站
  • 西安百度竞价托管公司搜索引擎优化排名培训
  • 哪个网站音乐做的最好的法律咨询网站开发
  • 国开行网站毕业申请怎么做什么好的主题做网站
  • 做网站打电话怎么和客户说pc网站建设和推广
  • 免费建站排名百度智能建站系统
  • 企业网站推广设计商城网站开发实施方案
  • 做个简单的网站多少钱旅行社网站方案
  • 厦门网站制作方案cdn网络对网站开发有影响吗
  • 网站代码查询wordpress快速赚钱
  • 域名解析网站网页制作三剑客是指什么
  • 曲阜网站建设价格营销网站建设评估及分析
  • 怎么做网站埋点哪个网站做任务给东西
  • 全国卫生计生机构建设管理系统网站wordpress 分页导航无效
  • 做一个公司网站需要多少钱360浏览器最新版本下载安装
  • 电子商务网站开发的总结参考文献 教学网站建设
  • 开源网站建设工具怎样做校园网站推广
  • 北京网站建设方案书常熟住房和城乡建设局网站