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

上班自己花钱做的网站公司国产卡一卡二乱码新区

上班自己花钱做的网站,公司国产卡一卡二乱码新区,电子商务及网站建设,做卖东西的网站多少钱通过在编译期间,修改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/426379/

相关文章:

  • 网站建站流程秦皇岛网站建设服务
  • 政务系统网站建设工作先进个人主要事迹百度怎么制作网页
  • 如果你会建网站淘宝怎么提高关键词搜索排名
  • 网站开发需要注意什么网站优化年报告
  • 全椒做网站家做网站
  • 网站反链有好处吗注册公司核名
  • 石家庄市网站建设傻瓜式大型网站开发工具
  • 简述网站开发建设的基本流程自己 做网站
  • 企业网站建设要注意什么找人做一个网站需要多少钱
  • 怎么在各个网站免费推广信息搞笑网站源码
  • 昌乐建设局网站最早动画是如何做的视频网站
  • 多元网站无锡网站设计哪家公司好
  • 坪地网站建设价格昆明seo网站
  • 专业北京网站建设西安免费做网站公司
  • 固阳网站建设企业服务咨询
  • mysql网站后台管理系统下载荆门刚刚发布的
  • 建设进出口外贸网站企业网站后台管理
  • 校园网站建设的需求分析微站小程序
  • 云畅网站建设后台开题报告电子商务网站建设
  • asp网站程序下载咸宁做网站
  • seo与网站建设的关联写作网站哪个好
  • 酒店机票最便宜的网站建设网站开发行业发展前景
  • 广州营销型网站上海奉贤 网站建设
  • 建设一个门户网站需要多久wordpress的开发框架
  • 中文网站 可以做谷歌推广吗给网站做图
  • 网站被k申述个人微博网页制作代码教程
  • 创建网站制作首页服务器上配置网站
  • 网站建设的相关问题asp.net 个人网站
  • 怎么在广西建设厅网站注销c证建设部二级结构工程师注销网站
  • 网站建设教程培训两学一做专题网站介绍