在上一篇文章中有讲到使用反射手写IL代码动态生成类并实现接口. 反射的妙用:C#通过反射动态生成类型继承接口并实现 有位网友推荐使用 Roslyn 去脚本化动态生成,今天这篇文章就主要讲怎么使用 Roslyn 动态生成类. 什么是Roslyn 最初 C# 语言的编译器是用 C++ 编写的,后来微软推出了一个新的用 C# 自身编写的编译器:Roslyn,它属于自举编译器. 所谓自举编译器就是指,某种编程语言的编译器就是用该语言自身来编写的.自举编译器的每个版本都是用该版本之前的版本来编译的,但它的…
写作目的:Java大部分框架,如Spring,Hibernate等都会利用动态代理在程序运行的时候生成新的类, 有的时候为了学习,或者深入了解动态代理,想查看动态生成类的源代码究竟长怎么个样子, 通过这篇文章,我们就能够很容易到达目的. 工具:利用JDK自带的工具. 相关命令:java -cp .;%JAVA_HOME%/lib/sa-jdi.jar sun.jvm.hotspot.HSDB 操作步骤: 1) 打开命令行窗口, 查看JDK安装目录 2) 进入该目录 3)输入关键命令 将会弹出一个…
有个技术实现需求:动态生成类,其中类中的属性来自参数对象中的全部属性以及来自参数对象properties文件. 那么技术实现支持:使用CGLib代理. 具体的实现步骤: 1.配置Maven文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w…
前置工作 1. 复制 JDK 安装目录\jre\bin\sawindbg.dll 到 JDK 安装目录同级的 jre\bin 目录下,否则会报错找不到 sawindbg.dll 文件. 比如我的 sawindbg.dll 文件在 D:\Program Files\Java\jdk1.8.0_301\jre\bin 目录下,需要复制到 D:\Program Files\Java\jre1.8.0_301\bin 目录下   2. 启动工程,需要注意的是,启动工程的 JVM 环境必须是安装的 JDK…
BeanTest2.java import java.io.FileOutputStream; import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.FieldVisitor; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; public…
背景 目前创建一个后端请求接口给别人提供服务,无论是使用SpringMVC方式注解,还是使用SpringCloud的Feign注解,都是需要填写好@RequestMap.@Controller.@Pathvariable等注解和参数.每个接口都需要重复的劳动,非常繁琐.特别是服务治理框架的接口层不是springmvc,而都是通过TCP连接来做RPC通信的接口,这样的接口调试起来比较麻烦,测试人员也不能感知接口参数,压力测试的时候没得使用JMETER方便. 目的 为了解放双手,让后端服务开发人员提…
private void GenerateCode() { /*注意,先导入下面的命名空间 using System.CodeDom using System.CodeDom.Compiler; using Microsoft.CSharp; using System.Reflection; */ //准备一个代码编译器单元 CodeCompileUnit unit = new CodeCompileUnit(); //准备必要的命名空间(这个是指要生成的类的空间) CodeNamespace…
ABP动态webapi前端怎么调用? 研究abp项目时,页面js文件中一直不明白abp.services... 是从哪里来的 在调试SimpleTaskSystem的AngularJs demo时,一开始我只看到对服务的应用. 1 2 3 4 5 app.controller(controllerId, [   '$scope', 'abp.services.tasksystem.task',   function($scope, taskService){}]); 在查找源代码中的所有js文件…
package spring.vhostall.com.proxy; public interface Store { public void sell(); } -------------------------------------------- package spring.vhostall.com.proxy; public class Supermarket implements Store { @Override public void sell() { System.out.pr…
1.类加载器 ·简要介绍什么是类加载器,和类加载器的作用 ·Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader,AppClassLoader ·类加载器也是Java类,因为其他是Java的类加载器本身也要被类加载器加载,显然必须有第一个加载器不是Java类,这正是BootStrap ·Java虚拟机中的所有类加载器采用具有树形结构进行组织,在实例化每个类装载器对象时,需要为其指定一个父类级的装载器对像或者采…