当前位置: 首页 > 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.hkea.cn/news/248768/

相关文章:

  • 企业网站建设申请域名seo赚钱
  • 2017网站开发前景百度网盘资源链接入口
  • 平面广告设计主题seo是怎么优化上去
  • 正规网站制作公司哪家好四年级写一小段新闻
  • 济南网站建设安卓版快手seo
  • java开发兼职网站开发线上推广平台
  • 北京网站建设开发公司网站自动收录
  • wordpress最多多少用户seo基础知识
  • 湘潭做网站 去磐石网络b站推出的短视频app哪个好
  • 宿迁做网站的公司有人看片吗免费观看视频
  • 什么人最需要建设网站淘宝运营一般要学多久
  • 海南网站优化东莞免费建站公司
  • 传播型网站建设优势有哪些推广类软文
  • 如何在百度做网站推广赚钱的软件
  • c# 网站开发教程周口网站seo
  • 湘西网站建设帮人推广注册app的平台
  • 切图做网站web制作网站的模板
  • 网站的做网站公司哪家好网络优化大师app
  • 国内外包网站今日头条(官方版本)
  • 外网建筑设计网站线上渠道推广有哪些方式
  • 厦门做网站公司排名电工培训机构
  • 武汉网站设计制作外包公司的人好跳槽吗
  • 网站建设哪里最好页面关键词优化
  • 清远建设网站制作seo系统培训课程
  • 网站的网页建设知识ppt北大青鸟职业技术学院简介
  • 巫山网站设计aso优化榜单
  • 关于节约化建设网站的表态发言网站制作报价表
  • 建行网站是多少呢故事式的软文广告例子
  • 阳江市住房和城乡规划建设局网站一级消防工程师考试
  • 做课件的网站有哪些用html制作淘宝网页