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

「Java开发指南」如何自定义Spring代码生成?(一)

搭建用户经常发现自己对生成的代码进行相同的修改,这些修改与个人风格/偏好、项目特定需求或公司标准有关,本教程演示自定义代码生成模板,您将学习如何:

  • 创建自定义项目
  • 修改现有模板来包含自定义注释
  • 使用JET和Skyway标记库中的标记
  • 配置项目来使用自定义

注意:自定义Spring代码生成需要MyEclipse授权。

创建自定义项目

在支持Spring的​​​​​​​MyEclipse中,您可以创建一个定制项目来自定义一套完整的代码生成模板。这个标准的Eclipse项目包含所有可用的JET模板,默认情况下,scaffolding功能使用已安装的MyEclipse for Spring插件中的标准模板,但是可以很容易地配置该项目,来使用一个或多个Customization项目作为模板源。

1. 选择File>New>Other,展开MyEclipse Customization,然后选择MyEclipse for Spring Customization Project,点击Next。

创建新的自定义项目

2. 输入AcmeCustomizations作为项目名,然后点击Finish。

给项目命名

自定义模板

几乎所有生成的Spring scaffolding构件都来自使用JET实现的模板,JET是Eclipse M2T项目中的模板引擎,用于使用类似于JavaServer Pages (JSP)的方法将元数据/模型转换为具体代码。

1. 在资源管理器中展开自定义项目,代码生成模板分组到几个文件夹中。

模板文件夹

2. 打开名为Service.jet的模板,Spring服务的模板位于com.skyway.integration.service.webservice/templates文件夹中。

用于生成Spring服务的JET模板

模板有三个主要部分:

用于编译模板的JET指令——JET模板被编译成Java代码,第一个JET指令指定编译参数(即:包名和类名)。

用于导入JET标记库的JET指令——JET标记库与JSP标记库非常相似,每个模板都必须指定将要使用哪些标记库。这个特殊的模板使用JET(org.eclipse.jet.*)和Skyway(org.skyway.integration.*)提供的库。

模板主体——这是模板的实际主体,用于指定生成的输出。

JET模板布局

将以下代码块添加到模板中,它应该立即添加到第10行(<%taglibprefix=”jaxws”…. %>)。

<%@taglib prefix="f" id="org.eclipse.jet.formatTags"%> //********************************************************** // <sw:javaType select="$model" /> // // Author: TODO: update developer's name in comment header // Creation date: <f:formatNow pattern="MM/dd/yyyy" /> // // Copyright (C) 2013 Acme Corporation //*********************************************************

查看模板自定义,更新后的模板将向所有生成的服务实现类添加注释块,注释块包括静态内容(即标签、版权声明)和动态内容(名称、日期),目标是在注释块中包含开发人员的名字。由于不能动态地派生开发人员的名称,因此将在源代码中发出一个Eclipse TODO任务,以提醒开发人员需要对其进行设置。以下是一些值得注意的事情:

  • 为了在标题中包含当前日期,使用JET声明包含了org.eclipse.jet.formatTags标记。
  • 类名将使用org.skyway.integration.java.spring.skywaySpringCodeGenTags标签发送到注释块中。

更新模板

未完待续,下期精彩继续......

http://www.jsqmd.com/news/1136975/

相关文章:

  • 高效准备Java面试:避开这5个常见误区
  • EhViewer:终极开源漫画浏览器 - 免费无广告的Android漫画阅读神器
  • 如何帮助旅行社老板打造个人IP品牌?
  • 硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
  • DataEase开源BI工具:如何在3分钟内做出明智的版本选择决策
  • 逆向工程实战:解密网易云音乐NCM加密格式
  • 「Qt Widget中文示例指南」如何创建一个窗口标志?(一)
  • SDC命令详解:使用get_nets命令进行查询
  • 3步打造你的专属Firefox浏览器:WaveFox主题定制完全指南
  • Xenia Manager未来路线图:即将推出的5大新功能预览
  • CDDStore性能优化指南:FPS监控、内存管理和启动优化终极教程
  • MAX9744与MKV42F128VLH16组合的D类音频放大器设计
  • Remotion键盘导航完全指南:用快捷键将视频制作效率提升300%
  • SDC命令详解:使用get_libs命令进行查询
  • 10分钟快速上手Stable Diffusion WebUI Forge:让AI绘画效果提升300%的终极指南
  • 深入解析FloatingView:Android悬浮动画库的核心架构
  • Crew vs Polecat:Gas Town中两种工作模式的最佳应用场景指南
  • 革命性文档主题pydata-sphinx-theme:打造专业级Python数据科学文档的完整指南
  • Paperxie 毕业论文智能写作|毕业写论文全程不用硬扛,一套工具走完全流程
  • MKXP:让RPG Maker游戏在Linux上重获新生的开源引擎
  • Mix 2.0与Tailwind CSS集成:打造高效Flutter开发工作流
  • etcdadm安全最佳实践:证书管理、访问控制和网络安全的完整方案
  • 猫抓浏览器插件:网页视频资源嗅探与下载的终极开源解决方案
  • Gas Town跨项目协作指南:Worktree与Dispatch两种模式对比
  • SmartMirror手势识别算法优化:提升准确率与响应速度的7个方法
  • React-redux-toastr 源码深度剖析:从reducer到组件的完整实现原理
  • ubuntu24安装MaxKB
  • 终极Mac清理指南:如何用Mole一次性释放95.5GB存储空间
  • 题解:学而思编程 第K个约数
  • Linkora使用技巧:10个你必须知道的高效链接管理功能