Java元数据和元编程的胡诌诌

前言

今天来简单说说java的元编程与元数据。 为什么想要说这样一个话题,目前其实在java的框架中就会大量应用到元编程、而在我的工作之中会大量使用到元数据进行应用开发。下面先所说的内容只包含我在工作实践、应用的方面理解,而不是整个名词的完整介绍,需要看详细的介绍可以点击 wiki:元编程wiki:元数据查看详细的介绍。

元数据

在我的开发工作中,元数据主要是做数据类型约束、接口定义,方法签名定义的作用。 大概的开发流程就是:

  1. 定义元数据,比如定义一个实体,描述这个实体的属性字段名称,类型,长度等信息。根据这些信息构造成一个规范的xml文件。
  2. 根据上一步构造的xml文件,也就是这里所指的元数据。(使用一些魔法,雾)使用公司定制化开发的eclipse插件,用这些xml文件生成标准的Java pojo 和 Java interface。然后标准和实体已经定义完成就可以进行具体的方法和接口的实现。

所以说在这里,元数据在应用中的开发中的作用就是做数据约束和标准定义。这样的开发模式可以说是非常好的一个思路。

  1. 标准化了开发流程,对数据本身有了一个明确的约束。有利于后期的开发维护。
  2. 减少了重复,意义不大的工作,不需要手动对 Java pojo 和 Java interface 的定义。直接使用元数据来生成对应的Java class 即可。
  3. 由于元数据的规范化,其实在此基础上的扩展能力有了很大的想象力。比如实体的合法校验 支持 jsr 303 (bean validation)规范等等。

元编程

在Java世界的元编程,其实很简单的说就是注解(annotation)的应用。

这里的就有很多样例了,比如大名鼎鼎的lombok和spring里面的各种注解。为什么这里还将lombok和spring的注解做区分呢?因为这里的元编程应用时期不同:

  1. lombok 应用于编译期,在java编译生成class文件时,会"偷偷改掉"我们的代码模样,生成对应的模板代码(JSR 269: Pluggable Annotation Processing API),想详细了解的同学可以看这篇文章哦 Java开发神器Lombok的使用与原理
  2. spring等其他注解主要是在运行期(不敢保证所有的都是在运行时的)。在运行时会调用对应的注解处理器处理对应的逻辑。这里的目的主要是减少模板代码,显得代码过于啰嗦、臃肿。

总结

元编程和元数据的理念都有一个共同的特点,就是减少模板代码,使用代码生成代码的思路去降低工作中繁杂、无用或者意义不大的工作任务。这是极其值得推广的思路,尤其在大型工程面前,可以省下的工作量就非常可观,而且代码量会更少,质量还会更好,也是印证了 less is more 的设计哲学。
元编程和元数据里还有很多概念和触及其他系统知识的东西(比如编译原理什么的,emmm),这篇文章就这样简单聊下啦,发现有错也请及时指出。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值