5.3. 业务逻辑
项目树集中在一个地方显示所有中间层服务、Spring bean 以及集成测试。在下面的章节中,我们将介绍如何创建新服务、bean 和测试。
5.3.1. 创建服务
服务 是容器管理的组件集,它们构成中间层边界并为客户端层提供接口。服务可以包含业务逻辑本身,也可以将执行委托给托管 Bean。
要创建新服务,请选择 Business Logic 项目树区域,然后在右键菜单中单击 New > Service:
输入服务接口的名称时,将自动生成相应的 bean 名称和服务名称常量:
之后,将在 global 模块中创建服务接口,并在 core 模块中创建其实现。此外,新服务将自动注册在 web-spring.xml
配置文件中。
可以从代码编辑器边栏上的标记轻松地从接口切换到服务 bean 并返回:
一旦在服务接口中创建了方法,Studio 检查器就会建议在 bean 类中进行实现:
5.3.2. 创建 Spring Bean
Studio 在项目树的 Business Logic → Beans 部分显示中间层(包括实体和事务监听器)的所有 Spring beans。Bean 按照它们所属的模块分组:core,global,web,portal。
要创建 Spring bean,选择项目树的 Business Logic → Beans 节点,并在右键菜单中选择 New > Bean:
Module - 选择新建 bean 放置的模块
Class - bean 的类名
Name - bean 的唯一名称。当输入类名后,会自动生成
5.3.3. 创建 JMX Beans
JMX Beans 是一类特殊的 Spring bean。系统管理员用 JMX bean 在运行时查看和更改应用程序的运行状态。这些 bean 通常用来提供统计信息、监控信息、修改配置以及其他一些系统内部操作。
Studio 在项目树的 Business Logic → Beans 与其他 bean 一起展示 JMX bean。JMX bean 可以在项目的 core,global,web 模块创建。
如需创建 JMX bean,在项目树选中 Business Logic → Beans ,然后在右键菜单中选择 New → JMX Bean,然后会弹出 Create JMX Bean 对话框:
Module - 选择新建 bean 放置的模块
Interface Class - bean 接口名称。此接口包含将会开放给 JMX 的方法。名称需要以
MBean
结尾Bean Class - bean 的类名
Bean Name - bean 的唯一名称。当输入接口名后,会自动生成
Package - bean 包名
Description - bean 描述,将在 JMX 客户端(比如 CUBA 自带的 JMX Console )展示给用户。
5.3.4. 创建事件监听器
事件监听器是指,在 Spring bean 中,有一个或者多个监听器方法,接收 Event 对象作为参数,并包含对该事件响应的代码。可以在 开发者手册 中了解更多关于事件和事件监听器的内容。
Studio 可以为多种应用程序事件创建监听器的脚手架代码:
可以生成新的监听器类或者为已有的类添加监听器。
新建监听器类
要创建新的监听器类,在 CUBA 项目树的 Business Logic 部分点击右键,选择 New → Event Listener 条目。
对话框中可以选择监听器类所在的模块。事件监听器可以位于 web 模块,但是此时只有有限的事件可以使用。选择事件类型,按照向导提供所需的参数并点击 Finish 按钮生成类代码。
为已有类添加监听器方法
打开已有的 Spring Bean,在代码编辑器顶部的操作面板点击 Subscribe to event:
5.3.5. 创建集成测试
CUBA 应用程序可以用众所周知的方式进行测试:单元测试、集成测试以及界面测试。Studio 为开发者提供下列种类的测试支持:
中间件集成测试 。这种类型的测试用来测试中间件功能:服务,bean,事件监听器,ORM 逻辑以及与数据库通信。中间件测试在一个能连接至数据库的全功能 Spring 容器中运行。
Web 集成测试 。这些测试用例运行在 web 客户端 block 的 Spring 容器中。Web 测试容器与中间件测试容器分别独立运行,框架负责创建中间件服务的桩代码。
这两组测试都在 CUBA 项目树的 Business Logic → Tests 部分展示,按模块分组:
如需创建新的集成测试,在项目树选中 Business Logic → Tests ,然后在右键菜单中选择 New → Integration Test (Middleware) 或 Integration Test (Web):
如果您的项目还没有测试代码根目录或者没有测试容器,Studio 会在创建文件和类之前显示一个额外的确认弹窗。
在这个弹窗中,需要输入以下参数:
Class Name - 测试类名
Package - 测试类的包名
Test container class - 测试容器类名。默认会自动创建
Common
容器,但是也可以创建其他容器类,比如,使用其他的 DBMS 测试应用程序。Testing library - 选择 JUnit5 或 JUnit4。注意,使用 CUBA 7.1 和以下版本创建的项目,即便迁移到了 CUBA 7.2,也只支持 JUnit4。