「Java开发指南」MyEclipse如何支持Spring Scaffolding?(四)

在上文中(点击这里回顾>>)主要为大家介绍了应用程序分层、代码助手等内容,本文将继续介绍Spring DSL模型等。

MyEclipse v2023.1.2离线版下载(Q技术交流:742336981)

5. Spring DSL模型

支持Spring的MyEclipse还有一个特性,它是面向那些希望通过使用抽象层(模型驱动开发)来加速Spring应用程序开发的开发人员的。抽象层被称为领域特定语言(DSL), Spring DSL定义了11个抽象。每个Spring DSL抽象管理/生成一个或多个Spring web应用程序源工件(Java代码或XML配置文件),每个抽象都有自己专用的编辑器,用于配置抽象的实例。

Spring DSL模型

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视图允许您在抽象级别查看项目。如果您希望在代码级别查看项目,那么请查看源代码。

scaffolded项目的Spring DSL视图

5.2 Spring DSL编辑器

每个Spring DSL工件都有一个用于配置工件的特定编辑器,它随后会影响由Spring DSL工件管理的代码和配置文件的生成。

篇幅有限,更多内容持续关注,下期见~

相关推荐
F-2H14 分钟前
C语言:指针4(常量指针和指针常量及动态内存分配)
java·linux·c语言·开发语言·前端·c++
苹果酱056717 分钟前
「Mysql优化大师一」mysql服务性能剖析工具
java·vue.js·spring boot·mysql·课程设计
武昌库里写JAVA21 分钟前
【MySQL】7.0 入门学习(七)——MySQL基本指令:帮助、清除输入、查询等
spring boot·spring·毕业设计·layui·课程设计
_oP_i1 小时前
Pinpoint 是一个开源的分布式追踪系统
java·分布式·开源
mmsx1 小时前
android sqlite 数据库简单封装示例(java)
android·java·数据库
武子康2 小时前
大数据-258 离线数仓 - Griffin架构 配置安装 Livy 架构设计 解压配置 Hadoop Hive
java·大数据·数据仓库·hive·hadoop·架构
豪宇刘3 小时前
MyBatis的面试题以及详细解答二
java·servlet·tomcat
秋恬意3 小时前
Mybatis能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别
java·数据库·mybatis
FF在路上4 小时前
Knife4j调试实体类传参扁平化模式修改:default-flat-param-object: true
java·开发语言
真的很上进4 小时前
如何借助 Babel+TS+ESLint 构建现代 JS 工程环境?
java·前端·javascript·css·react.js·vue·html