java roo,spring Roo安装使用简介

2023-11-02 08:40

本文主要是介绍java roo,spring Roo安装使用简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一直以来,Java/Spring开发被认为是笨重的代表,无法快速生成项目原型和骨架。所以,Spring推出了Spring Roo这个项目,帮助我们快速生成项目原型。本文参考自Spring Roo的官方文档,如果熟悉英文的话可以直接看原文档,内容更加丰富。

安装

安装命令行工具

Spring Roo是一套命令行工具,如果你使用的是Eclipse/STS,还可以使用Eclipse对应的插件。

首先先来下载命令行工具。到下载页面,选择对应版本下载。这里我选择的是最新的2.0.0.RC1 ,毕竟我有更新强迫症。下载完成之后解压,会得到一个文件夹,其中bin目录下就是Spring Roo的可执行文件了。可以看到它有bat和sh两种格式,可以在不同系统上运行。为了方便以后在终端窗口运行,我建议同时将这个文件夹添加到环境变量中。

安装好之后,打开命令提示符或者其他终端窗口,输入roo命令,就可以启动Roo了。值得提一点,Roo会在命令提示符对应的文件夹位置创建项目,所以如果需要在特定位置创建项目,先在命令提示符中切换到该文件夹,然后再启动Roo。

dfcf2c05847a7473e659c6aedeedd1a6.png

安装Eclipse插件

打开你的Eclipse/STS,然后遵循以下步骤:

点击菜单栏 Help ▸ Install New Software

点击 Available Software sites

点击 Import 按钮

找到 “$ROO_HOME/conf/sts-sites-bookmarks.xml” 并确定,这里$ROO_HOME是你安装Roo的目录

根据需要选择对应的版本

在过滤栏输入roo

选中功能 Spring IDE Roo Support

然后一路确定并允许条款

最后重启IDE即可

下面是官方文档的图,如果有疑问照着这张图来就行了。

6b33ab6801f645826dd5b0468d861709.png

到这一步还没完,插件是安装好了,但是还没有配置。其实要配置的也很简单,告诉插件你的Roo工具安装到哪里就行了。点击 Window ▸ Preferences ▸ Spring ▸ Roo Support ,打开设置,然后照着官方文档截图设置好你的工具路径即可。

a258695e663060abb74b5f8575463de6.png

这样插件就设置完毕了。其实这个插件也没啥作用,就是在Eclipse中开了一个窗口,能运行Roo命令,和直接在命令提示符中运行其实是一样的。

使用Roo

运行Roo脚本

$ROO_HOME\samples文件夹下有三个示例项目脚本,使用Roo运行它们可以快速创建相应的项目。如果没有耐心,可以直接从这里开始。

0dc2f926be33d09297c9efaf12aaa7d1.png

比如说,我要运行clinic实例项目,就可以输入以下命令:

roo> script --file clinic.roo

稍等片刻,程序就会创建完毕。

5eb3a673b31f05d0d6ffe0ffc6eca5e8.png

最后创建出的是一个基于Maven的Spring Boot程序。在IDEA下是这么一个样子。可以看到项目中有一个名字叫log.roo的日志文件,它记录了这个Roo脚本执行的内容。另外不知道为什么程序在IDEA下会有一点报错,不过不影响编译和运行。

37f082dc0d5f435cbe85f3e917c1db13.png

这个PetClinic示例程序使用了Spring Security来保护页面。我查阅了一下,Spring Boot下Spring Security默认的用户名是user,密码则在程序启动的时候随机输出到控制台中。最后运行截图如下,大家可以自己运行和测试一下这个程序。

e47a78159cda6c4669fd3952e8f7526c.png

脚本解释

下面来解释一下PetClinic这个程序的Roo脚本,让我们来看看Roo是如何工作的。这里只做一下简单解释,如果需要详细资料的话可以参考官方文档的附录,完整介绍了Roo的各种命令和参数以及用法。

首先是创建项目并指定顶级包名,这样会创建一个基于Maven的Spring Boot项目。

project setup --topLevelPackage org.springframework.roo.petclinic

然后是指定JPA存储类型,这里用的是Hibernate,数据库是存储在内存的HSQLDB。当然也可以使用其它数据库,不过相应地需要增加用户名等其他参数。

jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY

然后是几个枚举类,将会在实体类中用到,这里的~指代前面设置的顶级包名。

enum type --class ~.domain.reference.PetType

enum constant --name DOG

enum constant --name CAT

enum constant --name BIRD

enum type --class ~.domain.reference.Specialty

enum constant --name CARDIOLOGY

enum constant --name DENTISTRY

enum constant --name NUTRITION

然后是项目中的几个实体类。

entity jpa --class ~.domain.Pet --sequenceName PET_SEQ --entityFormatExpression "#{name} (#{type})"

entity jpa --class ~.domain.Visit --sequenceName VISIT_SEQ --entityFormatMessage visit_format

entity jpa --class ~.domain.AbstractPerson --abstract

entity jpa --class ~.domain.Vet --extends ~.domain.AbstractPerson --entityFormatExpression "#{lastName} (#{specialty})"

entity jpa --class ~.domain.Owner --extends ~.domain.AbstractPerson --entityFormatExpression "#{lastName} (#{city})"

之后的叫本详细设置了每个实体类的属性以及对应关系,由于比较多所以我只挑选了几个典型的。在设置实体类之前,需要使用focus命令指定要设置的实体类。

focus --class ~.domain.Pet

field boolean --fieldName sendReminders --notNull --primitive

field string --fieldName name --notNull --sizeMin 1

field number --fieldName weight --type java.lang.Float --notNull --min 0

field enum --fieldName type --type ~.domain.reference.PetType --notNull

field set --fieldName visits --type ~.domain.Visit

focus --class ~.domain.AbstractPerson

field string --fieldName firstName --sizeMin 3 --sizeMax 30

field string --fieldName lastName --notNull --sizeMin 3 --sizeMax 30

field string --fieldName address --notNull --sizeMax 50 --sizeMin 1

field string --fieldName city --notNull --sizeMax 30

field string --fieldName telephone --notNull

field string --fieldName homePage --sizeMax 30

field string --fieldName email --sizeMax 30 --sizeMin 6

field date --fieldName birthDay --type java.util.Date --notNull

然后设置实体类之间的投影关系并设置JPA Repository。

entity projection --class ~.domain.VetInfo --entity ~.domain.Vet --fields id,firstName,lastName,specialty --entityFormatExpression "#{firstName} #{lastName}"

repository jpa --entity ~.domain.Vet --interface ~.repository.VetRepository --defaultReturnType ~.domain.VetInfo

repository jpa --all --package ~.repository

service --all --apiPackage ~.service.api --implPackage ~.service.impl

然后是设置DTO(数据传输对象),它和页面中的表单等信息对应,然后在后台转换为相应的实体类。在这里还可以指定finder,也就是查询条件,查询条件的规则请参考Spring Data JPA的相关内容。

dto --class ~.domain.PetNameAndWeightFormBean

field string --fieldName name

field number --fieldName weight --type java.lang.Float

finder add --entity ~.domain.Pet --name findByNameAndWeight --formBean ~.domain.PetNameAndWeightFormBean

然后是设置Spring Web MVC,这里指定Thymeleaf作为视图层,并为所有控制器生成JSON和Thymeleaf视图。

web mvc setup

web mvc view setup --type THYMELEAF

web mvc controller --all --responseType JSON

web mvc controller --all --responseType THYMELEAF

然后是生成查询和详情页面。这里针对前面设置的所有查询条件生成相应的查询页面,然后生成指定实体类的详情页面。最后指定了页面语言,目前好像只支持英语和西班牙语。

// Publishing finders

web mvc finder --all --responseType THYMELEAF

// Adding details

web mvc detail --entity ~.domain.Owner --field pets --views list,show,findByCityLike --responseType THYMELEAF

web mvc detail --all --views list,show --responseType THYMELEAF

web mvc language --code es

然后使用了Spring Security保护了一下程序。第一行的是使用Spring Security的默认配置,用户名是user,密码是打印在控制台的随机字符串。第二行配置了一下用户权限,只有管理员角色的用户才能执行删除操作。

security setup --provider DEFAULT

security authorize --class ~.service.impl.OwnerServiceImpl --method delete.* --roles ADMIN

然后启用了审计功能,程序会自动记录相应实体类的编辑时间和编辑者。

jpa audit setup

jpa audit add --entity ~.domain.Pet

jpa audit add --entity ~.domain.Owner

jpa audit add --entity ~.domain.Visit

jpa audit add --entity ~.domain.Vet

然后启用了Web服务端点功能,这些端点可以在/servicesURL下查看。

ws endpoint --service ~.service.api.OwnerService --sei ~.ws.api.OwnerWebService --class ~.ws.endpoint.OwnerWebServiceEndpoint --config ~.config.WsEndpointsConfiguration

ws endpoint --service ~.service.api.PetService --sei ~.ws.api.PetWebService --class ~.ws.endpoint.PetWebServiceEndpoint --config ~.config.WsEndpointsConfiguration

最后自动为这些实体类和服务生成单元测试和集成测试。

// Generating unitary tests for all entities

test unit --class ~.domain.Owner

test unit --class ~.domain.Pet

test unit --class ~.domain.Vet

test unit --class ~.domain.Visit

// Repository integration tests

test integration --class ~.repository.VetRepository

test integration --class ~.repository.OwnerRepository

test integration --class ~.repository.VisitRepository

test integration --class ~.repository.PetRepository

// Controller integration tests

test integration --class ~.web.OwnersCollectionJsonController

test integration --class ~.web.PetsItemJsonController

test integration --class ~.web.VetsCollectionThymeleafController

test integration --class ~.web.VisitsItemThymeleafController

总结

以上就是本文关于spring Roo安装使用简介的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

这篇关于java roo,spring Roo安装使用简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/329448

相关文章

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Win安装MySQL8全过程

《Win安装MySQL8全过程》:本文主要介绍Win安装MySQL8全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Win安装mysql81、下载MySQL2、解压文件3、新建文件夹data,用于保存数据库数据文件4、在mysql根目录下新建文件my.ini

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll