2019独角兽企业重金招聘Python工程师标准>>>

讲代码生成器之前先要说说模板,什么叫模板呢,举个例子吧,汇款单都见过吧,你不填写的那些内容都属于模板范畴

说到这应该明白了吧,模板就是把共性提取出来反复使用,节约时间、工作量。。。。。

那跟代码生成器有什么关系呢,思考一下在编程语言中所有的语言是不是都用共性或者说规范,这些都是固定不变的,在具体点,软件行业也是分主营业务的,比如OA、CRM、ERP、SCM等等,那么各个业务方向的软件是不是也有其行业特点,这是不是也是固定的,那么这就完了,这些独特的地方是不是可以提取出来作为模板呢,不言而喻

言归正传,说到模板就不得不说现在主流的模板技术了,FreeMarker、Velocity(这个google在用),模板技术推崇一种模式:

输出=模板+数据,所以运用到代码生成器上也是一样的道理,举个简单例子比如要生成一个javabean组件,就普通的pojo类,

那么先分析一下生成这种类有什么共性呢,关键字就不用说了,getter和setter方法都是get+属性名uppercase首字母和set+属性名uppercase首字母,还有“{}”、“;”、“()”等等这些都是不变的,那么这些内容就可以作为模板内容,包名、类名、属性名这些是人为要取的,这些是变化的,故变的这部分就作为数据,这样就可以根据不同的‘数据’来生成不同的javabean

转载于:https://my.oschina.net/william1/blog/4733

关于java代码生成器---上篇之原理相关推荐

  1. Java Synchronized 重量级锁原理深入剖析上(互斥篇)

    前言 线程并发系列文章: Java 线程基础 Java 线程状态 Java "优雅"地中断线程-实践篇 Java "优雅"地中断线程-原理篇 真正理解Java ...

  2. 深入掌握Java技术 EJB调用原理分析

      深入掌握Java技术 EJB调用原理分析     一个远程对象至少要包括4个class文件:远程对象:远程对象的接口:实现远程接口的对象的stub:对象的skeleton这4个class文件. 在 ...

  3. java.lang.ThreadLocal实现原理和源码分析

    java.lang.ThreadLocal实现原理和源码分析 1.ThreadLocal的原理:为每一个线程维护变量的副本.某个线程修改的只是自己的副本. 2.ThreadLocal是如何做到把变量变 ...

  4. java gc的工作原理、如何优化GC的性能、如何和GC进行有效的交互

    java gc的工作原理.如何优化GC的性能.如何和GC进行有效的交互 一个优秀的Java 程序员必须了解GC 的工作原理.如何优化GC的性能.如何和GC进行有效的交互,因为有一些应用程序对性能要求较 ...

  5. Java程序的运行原理及JVM的启动是多线程的吗?

    Java程序的运行原理及JVM的启动是多线程的吗? A:Java程序的运行原理 Java通过java命令会启动java虚拟机.启动JVM,等于启动了一个应用程序,也就是启动了一个进程. 该进程会自动启 ...

  6. 【Java 虚拟机原理】JDK 体系结构 | Java 源码运行原理 | Java 虚拟机内存

    文章目录 一.JDK 体系结构 二.Java 源码运行原理 三.Java 虚拟机内存结构 一.JDK 体系结构 JDK 体系结构 : 下图所有的内容都是 JDK 体系中的组成元素 ; Java Lan ...

  7. java高级----Java动态代理的原理

    Java动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程 ...

  8. Java集合 LinkedList的原理及使用

    1.LinkedList的概述 2.LinkedList的常用方法 3.LinkedList的三种便利方式 4.LinkedList的总结 1.LinkedList的概述 LinkedList和Arr ...

  9. 【Java基础】HashMap原理详解

    [Java基础]HashMap原理详解 HashMap的实现 1. 数组 2.线性链表 3.红黑树 3.1概述 3.2性质 4.HashMap扩容死锁 5. BATJ一线大厂技术栈 HashMap的实 ...

最新文章

  1. mapreduce编程实例python-Python模拟MapReduce的流程
  2. HDU1160:FatMouse's Speed(最长上升子序列,不错的题)
  3. BZOJ 1856: [Scoi2010]字符串 [Catalan数]
  4. 抖音测试心理是什么软件,实用心理测试大全抖音版-抖音实用心理测试大全小游戏官方版预约 v1.0-友情手机站...
  5. [MIPS汇编语言]InsertionSort插入排序
  6. O’Reilly发布“微服务成熟度状态”报告:微服务是成功的
  7. boost::math::barycentric_rational相关用法的测试程序
  8. sendmessage和postmessage的区别
  9. 快速排序——Java
  10. 几何级数 函数 matlab,matlab 实验05数据的统计分析
  11. [转载] Linux进程基础
  12. HIT Software Construction Review Notes(2-1 Software Lifecycle and Configuration Management)
  13. 深入探究VC —— 资源编译器rc.exe(3)
  14. POJ1338 Ugly Numbers(解法二)
  15. pyqt5写一个抽奖程序(再次美化)
  16. JS原生读取 本地 JSON
  17. LwM2M(轻量级M2M)协议
  18. 计算机无法访问inter,电脑网络提示无Internet访问权限解决办法
  19. linux安装mysql deb_Ubuntu下通过deb的bundle文件安装MySQL
  20. VLIW Microprocessor Hardware Design

热门文章

  1. Python open 读和写
  2. 对SQLSERVER进行性能监控
  3. StringBuilder与 StringBuffer
  4. js 回车触发点击事件
  5. 第 5 章 Stream
  6. Linux文件名命名规范
  7. if for while until case select 命令
  8. Unity下的ECS框架 Entitas简介
  9. 禁止微信下拉 露出黑色背景
  10. 《Cucumber:行为驱动开发指南》——2.3 创建步骤定义