「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工件管理的代码和配置文件的生成。

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

相关推荐
微风中的麦穗7 小时前
【MATLAB】MATLAB R2025a 详细下载安装图文指南:下一代科学计算与工程仿真平台
开发语言·matlab·开发工具·工程仿真·matlab r2025a·matlab r2025·科学计算与工程仿真
毕设源码-朱学姐8 小时前
【开题答辩全过程】以 基于JavaWeb的网上家具商城设计与实现为例,包含答辩的问题和答案
java
C雨后彩虹10 小时前
CAS与其他并发方案的对比及面试常见问题
java·面试·cas·同步·异步·
sww_102610 小时前
RAG检索增强 ETL最佳实战
人工智能·python·spring
java1234_小锋11 小时前
Java高频面试题:SpringBoot为什么要禁止循环依赖?
java·开发语言·面试
2501_9445255411 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 账户详情页面
android·java·开发语言·前端·javascript·flutter
计算机学姐11 小时前
基于SpringBoot的电影点评交流平台【协同过滤推荐算法+数据可视化统计】
java·vue.js·spring boot·spring·信息可视化·echarts·推荐算法
Filotimo_11 小时前
Tomcat的概念
java·tomcat
索荣荣12 小时前
Java Session 全面指南:原理、应用与实践(含 Spring Boot 实战)
java·spring boot·后端