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

使用python建设一个论坛网站工厂管理系统软件

使用python建设一个论坛网站,工厂管理系统软件,潍坊网页网站制作,免费推广网站2023mmm在本文中#xff0c;我将向你展示如何生成的代码JAnnocessor通过创建框架Nikolche Mihajlovski 。 在Nikolche的演讲中#xff0c;我第一次在GeeCON 2012大会上遇到JAnnocessor#xff1a; “创新和实用的Java源代码生成” #xff08;幻灯片#xff09; 。 之后#xff… 在本文中我将向你展示如何生成的代码JAnnocessor通过创建框架Nikolche Mihajlovski 。 在Nikolche的演讲中我第一次在GeeCON 2012大会上遇到JAnnocessor “创新和实用的Java源代码生成” 幻灯片 。 之后我在一个项目中成功使用了它。 这个框架几乎没有资源所以我希望我的文章对那些对使用它感兴趣或正在为项目寻找全新玩具的人有所帮助。 背景 每个Java开发人员每天都使用某种代码生成工具。 设置器获取器琐碎的构造函数toString –所有这些只是样板代码。 通常我们会在我们最喜欢的IDE的帮助下生成它。 我真的无法想象手动编码它并且由于Java是一种静态语言我们将永远无法跳过此过程。 所有现代IDE都提供的那些琐碎的代码生成示例并不是唯一有用的代码生成情况。 有许多现代框架生成一些代码来帮助我们编写更可靠的代码并更快地执行。 我认为最著名的示例是QueryDSL和JPA2元模型生成器 它们创建用于执行类型安全的数据库查询的对象。 还有其他情况-IDE不能很好地支持-我们可以使用代码生成。 通常它可能有助于生成 建造者 正面 从域对象到DTO的DTO和映射器 这些仅是示例。 对于某些项目可能存在某些特定于项目的项目我们不能使用任何现有的代码生成工具而必须编写自己的代码。 怎么做 使用Java APT –注释处理工具 。 关于Java APT的几句话 Java 1.5中引入了注释处理工具它提供了用于处理注释类的低级API。 它是大多数也许是全部现有代码生成框架的基础并且由于API的级别很低如果您只想生成一些类我不建议您使用纯Java APT。 使用apt-jelly另一个代码生成工具页面上的示例 可以很清楚地了解使用APT进行代码生成的情况。 您可以使用现有框架之一而不必使用普通的Java APT。 最近我参加了有关有趣的JAnnocessor的会议讨论该JAnnocessor似乎做得很好。 您好JAnnocessor JAnnocessor是Nikolche Mihajlovski制作的一个相当新的框架。 与APT有何不同 这是作者怎么说的作者 JAnnocessor建立在Java APT的基础上将Java源代码模型封装在丰富而方便的高级域模型中该模型是表达匹配和转换的良好目标。 JAnnocessor带有几个内置处理器 builder dto facade和mapper 。 如果您需要自定义功能则可以轻松地自己编写。 有一个很大的缺点–非常差的文档。 实际上几乎没有任何文档。 在Wiki中您找不到太多甚至更糟的东西–在框架类中也找不到Javadocs。 尽管有作者编写的入门指南 但我还是有一些遗漏之处因此我将逐步指导您完成基础知识。   Maven设置 我们将仅在编译阶段使用JAnnocessor因此无需将其添加到我们的应用程序包中-我们将范围设置为 dependencygroupIdcom.googlecode.jannocessor/groupIdartifactIdjannocessor/artifactIdversion0.7.2/versionscopeprovided/scope /dependency 下一部分是注释处理插件。 尽管《 入门指南》建议使用jannocessor-maven-plugin但由于缺少一些配置选项我被迫使用maven-processor-plugin“过时”。 在构建/插件部分我们添加 plugingroupIdorg.bsc.maven/groupIdartifactIdmaven-processor-plugin/artifactIdversion2.0.4/versionexecutionsexecutionidgenerate-code/idgoalsgoalprocess/goal/goalsphasecompile/phaseconfigurationprocessorsprocessororg.jannocessor.processor.JannocessorProcessor/processor/processorssystemPropertieslogback.configurationFile${project.basedir}/etc/jannocessor-logback.xml/logback.configurationFile/systemPropertiesoptionstemplates.path${project.basedir}/src/main/resources/templates.path/optionsdefaultOutputDirectory${project.basedir}/target/generated-sources//defaultOutputDirectory/configuration/execution/executions /plugin 处理器 -告诉maven-processor-plugin哪个类执行注释处理-请勿更改 configuration / logback.configurationFile –是可选的。 JAnnocessor使用内部lo​​gback进行日志记录如果您在项目中也这样做并且在classpath中有logback.xml它将由JAnnocessor使用。 我建议为JAnnocessor编写单独的日志记录配置以避免可能的问题例如如果您使用janino conditionals 。 jannocessor-logback.xml可以很简单 ?xml version1.0 encodingUTF-8? configurationappender nameconsole classch.qos.logback.core.ConsoleAppenderencoderpattern%-30(%date) %-5level %logger{0} %msg%n/pattern/encoder/appenderroot levelerrorappender-ref refconsole//root/configuration options / templates.path –可能您将使用自定义JAnnocessor模板。 如果您不愿意可以删除该行 defaultOutputDirectory –很重要–默认情况下将生成的类添加到src / main / java中-在我看来这是一个非常糟糕的主意。 请记住 每次Maven构建都会重新创建所有生成的类并且所有手工修改都将丢失 。 这就是为什么生成的类应该放在/target/generated-sources/或/target/generated-test-sources/ 建造者一代 在此示例中我将使用内置生成器为我的简单POJO生成生成器类。 首先我们需要新的注释来标记要为其生成构建器的类。 它可以很简单 package pl.maciejwalkowiak.jannocessor.domain;public interface GenerateBuilder { } 我们的样本POJO package pl.maciejwalkowiak.jannocessor.domain;GenerateBuilder public class Person {private String firstName;private String lastName;private Integer age;public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName lastName;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;} } 接下来的重要部分是告诉JAnnocessor必须生成什么。 为此我们需要在特定的包中创建特定的类 org.jannocessor.config.Processors 。 我找不到使它可配置的方法这样配置就可以在我们项目的程序包中。 在配置中我们指定应在何处放置创建的类 pl.maciejwalkowiak.jannocessor.domain.builder以及基本bean类在哪里 pl.maciejwalkowiak.jannocessor.domain 。 最后一个参数表示我们是否要使用调试模式–目前并不重要。 package org.jannocessor.config;import pl.maciejwalkowiak.jannocessor.domain.GenerateBuilder;import org.jannocessor.extra.processor.BuilderGenerator; import org.jannocessor.model.structure.JavaClass; import org.jannocessor.processor.annotation.Annotated; import org.jannocessor.processor.annotation.Types;public class Processors {Annotated(GenerateBuilder.class)Types(JavaClass.class)public BuilderGenerator generateBuilder() {return new BuilderGenerator(pl.maciejwalkowiak.jannocessor.domain.builder, pl.maciejwalkowiak.jannocessor.domain, false);} } 运行它 为了运行它我们只需要执行mvn compile 。 在target/generated-sources/pl/maciejwalkowiak/jannocessor/domain/builder/我们将找到PersonBuilder类 package pl.maciejwalkowiak.jannocessor.domain.builder;import pl.maciejwalkowiak.jannocessor.domain.Person; import javax.annotation.Generated;/*** Generated by JAnnocessor*/ Generated(Easily with JAnnocessor) public class PersonBuilder {private String firstName;private String lastName;private Integer age;public PersonBuilder firstName(String firstName) {this.firstName firstName;return this;}public PersonBuilder lastName(String lastName) {this.lastName lastName;return this;}public PersonBuilder age(Integer age) {this.age age;return this;}public Person build() {Person instance new Person();instance.setFirstName(firstName);instance.setLastName(lastName);instance.setAge(age);return instance;}} 多亏了builder类我们有了用于创建Person对象的流畅接口 Person person new PersonBuilder().firstName(John).lastName(Doe).age(25).build(); 创建我们自己的发电机 为了创建自定义生成器JAnnocessor提供了丰富的API和几个示例。 不幸的是没有可用的指南或教程。 对于本文我想快速编写FEST Assert 2.x的生成器但是在研究JAnnocessor源代码一段时间后我放弃了。 相反我将仅展示概念。 为了编写自定义生成器代码您只需要创建从org.jannocessor.extra.processor.AbstractGenerator继承的类。 public class MyCustomGenerator extends AbstractGeneratorAbstractJavaClass {public MyCustomGenerator(String destPackage, boolean inDebugMode) {super(destPackage, inDebugMode);}Overrideprotected void generateCodeFrom(PowerListAbstractJavaClass models, ProcessingContext context) {// ....} } PowerListAbstractJavaClass models表示所有带有自定义注释的类的集合。 然后您可以访问所有类的字段方法已实现的接口等。我唯一想念的就是对类超类的丰富访问。 为了获得超类的字段我不得不使用Java Reflection API。 如果您想编写自定义生成器我鼓励您看一下诸如BuilderGenerator之类的示例 。 数量不多但绝对有帮助。   摘要 在这篇文章中我展示了如何设置和使用JAnnocessor。 尽管我认为它很好而且可能非常有用的库但是缺少文档使其无法在真正的严肃项目中使用。 我希望Nikolche能够撰写出色的文档或围绕将要实现的项目建立社区。 我也希望该项目将移至github。 它以某种方式成为标准因此如果作者希望围绕它建立社区–我认为这是唯一正确的举动。 尽管如此我还是问了他这个问题至少到目前为止他没有任何计划。 参考 Software Development Journey博客上的JCG合作伙伴 Maciej Walkowiak 使用JAnnocessor进行Java代码生成 。 翻译自: https://www.javacodegeeks.com/2012/08/java-code-generation-with-jannocessor.html
http://www.zqtcl.cn/news/421027/

相关文章:

  • 东莞网站建设 手机壳文登建设局网站
  • 网站建设和后台空间管理关系企业网络需求分析
  • 做小说网站做国外域名还是国内的好温州市网站建设
  • wordpress识别手机跳转网站3d视频动画制作
  • 展示型企业网站设计方案邯郸市口碑网络技术有限公司
  • 网站配色案例泰州seo平台
  • wordpress标题title优化代码seo技术顾问
  • 怎么做直播网站的超管延安免费做网站
  • 织梦做手机网站hao123从网上开始
  • 网站制作公司十强重庆网站建设mlfart
  • 南京调查公司网站杭州一起做网站
  • 不关站备案wordpress内网网站模板
  • 做学术用的网站如果在各大网站做免费的网络推广
  • 设计素材网站线上网站数据报表
  • 做一个小型网站多少钱wordpress 手机商城模板
  • 谷歌网站收录提交金山网站建设关键词排名
  • 域名备案中网站可以开通个人网站开发多少钱
  • 西安维护网站广州公司网站设计制作
  • 荆门做网站网络推广公司多久能回本
  • 搜索网站存在的关键字室内设计公司排名榜
  • 响应式网页开发昆明网站排名优化公司哪家好
  • 如东建设局网站线上购物平台
  • 重庆网站推广营销淘宝的网站怎么做的好
  • 重庆企业建站模板珠海企业官网设计制作
  • 网页作图软件东莞优化哪家好
  • 专业的商城网站开发深圳网站界面设计
  • 做网站需要自备服务器吗专业生产车间设计图纸网站
  • 用vs2010做网站教程昆明模板建站定制网站
  • dedecms网站模板下载做网站价格需要多少钱
  • 昆明餐饮网站建设建电影网站教程