「Java开发指南」MyEclipse如何支持Spring Scaffolding?(四)
在上文中主要为大家介绍了应用程序分层、代码助手等内容,本文将继续介绍Spring DSL模型等。
MyEclipse技术交流群:742336981 欢迎一起进群讨论
5. Spring DSL模型
支持Spring的MyEclipse还有一个特性,它是面向那些希望通过使用抽象层(模型驱动开发)来加速Spring应用程序开发的开发人员的。抽象层被称为领域特定语言(DSL), Spring DSL定义了11个抽象。每个Spring DSL抽象管理/生成一个或多个Spring web应用程序源工件(Java代码或XML配置文件),每个抽象都有自己专用的编辑器,用于配置抽象的实例。
Spring DSL定义了11个抽象,每个抽象都与一个或多个Java、Spring和JPA构件直接相关,并生成一组不同的代码或配置构件。
- Spring DSL – 用于Spring DSL代码生成的项目范围配置。
- Model Package – 用于命名空间和分组相关的Spring DSL组件,模型包可以包含任何顶级Spring DSL元素,包括其他模型包。模型包直接与Java包相关,并且在模型包中创建的Spring DSL构件被生成为匹配的Java包。
- Web Controller – 用于使用Spring MVC定义应用程序的Web层和管理相关文件,Web控制器被生成为带有@Controller注解的Spring组件,这是Web层组件的一个特殊构造型。
- Service – 用于定义业务层组件和管理相关文件,Services(服务)被生成为带有@Service注解的Spring组件,这是服务层组件的专用构造型。
- Component – 用于定义通用的Spring管理Java bean和管理相关文件,组件被生成为带有@Component注释的Spring组件,这是具有可配置作用域的Spring管理组件的通用构造型。
- Operation – 用于定义控制器、服务和组件的方法,操作表示应用程序逻辑,它们使用输入和输出来交换数据。操作直接在各自的Controller、Service和Component类中生成,并且它们的生成略有不同,以说明Spring构造型所需的不同实现。
- Domain Object – 用于定义应用程序的域模型和管理相关文件。默认情况下,将域对象生成为普通的旧Java对象(POJO)。如果一个域对象与一个数据访问对象相关联,那么这个域对象被注释为一个带@Entity (JPA)注释的类,并且它与一个主键类(@IdClass)相关联。可以使用基本数据类型将字段添加到域对象中,并且域对象可以与其他域对象建立关系。
- Data Access Object (DAO) – 用于将数据访问逻辑与应用程序逻辑分离,并管理相关文件。DAO管理领域对象的持久性,并将其生成为@Repository注释的Spring组件,这是数据访问层组件的专用构造型,DAO还可以包含称为命名查询的预定义查询。
- Named Query – 用于定义数据访问对象(dao)的查询,命名查询使用SQL或JPQL (Java持久化查询语言)定义,命名查询生成为Spring @Repository组件中的@NamedQueries和@NamedQuery注释。
- Exception – 用于定义自定义异常和管理相关文件,在Java中,异常被生成为异常类。
- Flow – 用于使用Spring web Flow实现应用程序的web层。
编辑器
每个Spring DSL组件都有一个关联的编辑器,基于Spring DSL的开发由开发人员创建Spring DSL组件的实例,并使用各自的编辑器配置它们组成。当调用代码生成时,由各自组件管理的代码和配置文件将根据其配置生成。
快速开始学习Spring DSL和Spring编辑器的一个好方法是将“启用Spring DSL”特性与“Scaffold Spring CRUD应用程序”特性结合起来。当您只使用scaffolding时,Spring DSL或Spring editor在项目中不可用。但是如果在运行scaffolding向导之前运行Enable Spring DSL向导(从而启用Spring DSL并将Spring DSL视图添加到您的项目中),scaffolding向导将为所有搭建的应用程序组件创建相应的Spring DSL工件(模型包、控制器、服务等)。它们出现在项目的Spring DSL视图中,您可以使用Spring DSL和Spring编辑器维护和增强scaffolded构件。
引导
在使用Spring DSL进行应用程序开发的过程中,开发人员将相关的Spring DSL构件的实例添加到他们的项目中。他们使用各自的编辑器根据需求配置构建,MyEclipse根据配置生成源代码。这种自引导为应用程序开发提供了极大的速度和敏捷性,因为开发人员不必纠结于Spring的细节或保持相关工件的同步,这一切都是在不限制开发人员使用标准Eclipse Java编辑器或XML编辑器维护应用程序工件的情况下完成的。一些抽象(例如,领域对象、DAO)可以用来生成完全实现的应用程序组件,这些组件可以随时运行,不需要额外的开发。其他抽象(例如,控制器、服务、组件)关注于Spring的框架生成和配置,而生成的Java类和Java方法的实际实现是通过Java编码完成的。
各种功能(一些可选的)可以添加到项目中,包括:
- 添加Spring应用程序运行时依赖项。
- 用所需的Spring配置引导项目。
- 启用代码生成生成器来自动生成代码。
- 为Spring/Java工件的自动逆向工程启用代码同步构建器。
- 启用Spring DSL,包括在项目中启用Spring DSL视图。
- 将Spring Nature应用到项目中,以便通过Spring Elements节点查看和编辑Spring配置。
- 支持按应用层(web、服务、领域和DAO)生成代码。
- 为代码生成配置目标项目和文件夹。
注意:支持Spring的MyEclipse也将在CRUD搭建期间引导您的项目;但是scaffolding向导不会为您的项目设置代码生成或Spring DSL支持。如果您希望同时支持scaffolding和Spring DSL,那么应该首先启用Spring DSL,然后运行Spring scaffolding。
5.1 Spring DSL视图
当Spring代码生成facets被添加到Eclipse项目中时,一个Spring DSL视图被添加到项目中,当使用MyEclipse Spring透视图查看时,这个视图在project Explorer中是可见的。该元素显示了项目的Spring DSL构件的层次视图,它可以用于与Spring DSL交互,包括:
- 配置项目级代码生成设置(双击Spring DSL,或右键单击,并从菜单中选择Open)
- 打开Spring DSL编辑器(双击Artifact,或者右键单击,并从菜单中选择Open)
- 创建新的Spring DSL工件(右键单击,并从菜单中选择New)
- scaffolding(右键单击,选择Scaffold Spring CRUD Application From)
Spring DSL视图与Eclipse中的Java源代码视图非常相似,因此它非常直观,易于学习。工件由模型包组织,模型包直接与Java包相关。在一个模型包下,有一个或多个Spring DSL构件。如前所述,Spring DSL构件是管理一个或多个Java代码构件的抽象,Spring DSL视图允许您在抽象级别查看项目。如果您希望在代码级别查看项目,那么请查看源代码。
5.2 Spring DSL编辑器
每个Spring DSL工件都有一个用于配置工件的特定编辑器,它随后会影响由Spring DSL工件管理的代码和配置文件的生成。
篇幅有限,更多内容持续关注,下期见~