`
xgbjmxn
  • 浏览: 270573 次
  • 性别: Icon_minigender_1
  • 来自: 新乡
社区版块
存档分类
最新评论

使用 Spring Roo 从零开始,一步步的创建一个简单的 Spring 程序

阅读更多
使用 Spring Roo 从零开始,一步步的创建一个简单的 Spring 程序。

SpringSource 刚刚发布最新版本 1.0.0m1 ,参见 Spring Roo 1.0.0.M1 Released。
相对之前的 alpha 2 ,这一版本中带来不少的新特性,下面发行说明中的罗列的新特性。

    * Much easier installation
    * 31% better performance
    * Tomcat support (for embedded usage)
    * JMS support (including ActiveMQ setup)
    * Selenium support
    * Email support
    * Web Flow installation
    * Additional samples
    * Various other fixes and improvements


在 Spring Roo 提供完整的官方文档之前 ,SpringSource 网站博客上提供入门文章 便是不可多得的学习资料,我这里也是根据文章进行操作的。
从 SpringSource 网站上下载 Spring ROO 1.0.0 m1 ,解压到硬盘上。
将 <spring_roo_dir>/bin  加入到系统的PATH变量中。在 Linux 系统上,你可以直接创建一个链接到 ~/bin 或 /usr/bin/ 中。

ln -sf <spring_roo_dir>/bin/roo.sh /home/<user>/bin/roo

注意,之前的 alpha 中要求设置 ROO_HOME 环境变量,现在不需要了,请将其删除。

另外, Spring Roo 需要 Maven 支持,你必须安装一个 2.0.9 以上的版本,参考用Maven 构建项目。

下面就可以开始创建一个新的Spring 项目。

1. 创建一个项目。
[hantsy@localhost ~]$ mkdir roodemo
[hantsy@localhost ~]$ cd roodemo

[hantsy@localhost roodemo]$ roo
    ____  ____  ____ 
   / __ \/ __ \/ __ \
  / /_/ / / / / / / /
/ _, _/ /_/ / /_/ / 
/_/ |_|\____/\____/    1.0.0.M1 [rev 64]


Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.

任何时候你可以输入hint 来获得一些操作建议。

roo> hint
Welcome to Roo! We hope you enjoy your stay!

Before you can use many features of Roo, you need to start a new project.

To do this, type 'create project' (without the quotes) and then hit TAB.

Enter a -topLevelPackage like 'com.mycompany.projectname' (no quotes).
When you've finished completing your -topLevelPackage, press ENTER.
Your new project will then be created in the current working directory.

Note that Roo frequently allows the use of TAB, so press TAB regularly.
Once your project is created, type 'hint' and ENTER for the next suggestion.
You're also welcome to visit http://forum.springframework.org for Roo help.

roo> cre           

这时按 Tab 键,你会发现 Spring Roo 会帮你自动补全命令 create project。

Linux 用户对 Tab 的使用再也熟悉不过了,在 Spring Roo 的命令行,你随时都使用 tab 来辅助命令的输入。

roo> create project

这里按下 enter ,会得到一条提示信息。

You must specify a default option (otherwise known as option 'topLevelPackage') for this command

指定一个 topLevelPackage 参数,它是项目的基础包名。再次提醒,这里你仍然可以 create project - 按 tab 来自动补全。

roo> create project -topLevelPackage roodemo
Created /home/hantsy/Projects/roodemo/pom.xml
Created SRC_MAIN_JAVA
Created SRC_MAIN_RESOURCES
Created SRC_TEST_JAVA
Created SRC_TEST_RESOURCES
Created SRC_MAIN_WEBAPP
Created SRC_MAIN_RESOURCES/applicationContext.xml
Created SRC_MAIN_WEBAPP/WEB-INF
Created SRC_MAIN_WEBAPP/WEB-INF/roodemo-servlet.xml
Created SRC_MAIN_WEBAPP/WEB-INF/web.xml
Created SRC_MAIN_WEBAPP/WEB-INF/jsp
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/index.jsp
Created SRC_MAIN_WEBAPP/WEB-INF/urlrewrite.xml

这里会生成一个标准 maven web 项目,目录结构如下。

.
|-- pom.xml
`-- src
    |-- main
    |   |-- java
    |   |-- resources
    |   |   `-- applicationContext.xml
    |   `-- webapp
    |       `-- WEB-INF
    |           |-- jsp
    |           |   `-- index.jsp
    |           |-- roodemo-servlet.xml
    |           |-- urlrewrite.xml
    |           `-- web.xml
    `-- test
        |-- java
        `-- resources

Spring Roo 已经帮你添加最基本的Spring 配置。
你可以把项目导入到eclipse进行编辑。
在项目根目录中运行 mvn eclipse:eclipse ,会生成 Eclipse 相关的特殊文件,如.classpath , .project等。
现在你可以像导入一个普通项目那样将这个项目导入到你的workspace中。


2. 设置数据库。

在持久层技术上选择,Roo 提供了多jpa实现的选择,和多种数据库选择。

这里如果输入hint,会得到以下信息。
roo> hint
Roo requires the installation of a JPA provider and associated database.

Type 'install jpa' and then hit TAB three times.
We suggest you type 'H' then TAB to complete "HIBERNATE".
After the -provider, press TAB twice for database choices.
For testing purposes, type (or TAB) HYPERSONIC_IN_MEMORY.
If you press TAB again, you'll see there are no more options.
As such, you're ready to press ENTER to execute the command.

Once JPA is installed, type 'hint' and ENTER for the next suggestion.

任何时候,不要忘记使用 hint 来获得提示。

roo> install jpa -    

按 tab 可以看到所提供的参数选项。

install jpa -database    install jpa -provider

输入 -p 按 tab 自动补全 -provider 。

roo> install jpa -provider

按 tab 可以看到几种可用的 jpa 实现。

ECLIPSELINK    HIBERNATE      OPENJPA

接着输入首字母 H 按tab,补全 HIBERNATE,再输入-d 按 tab,补全-database。

roo> install jpa -provider HIBERNATE -database

H2_IN_MEMORY             HYPERSONIC_IN_MEMORY     HYPERSONIC_PERSISTENT
MSSQL                    MYSQL                    ORACLE
POSTGRESQL               SYBASE

最后输入MY 按 tab 选择MySQL 数据库。

roo> install jpa -provider HIBERNATE -database MYSQL
Created SRC_MAIN_RESOURCES/META-INF
Created SRC_MAIN_RESOURCES/META-INF/persistence.xml
Created SRC_MAIN_RESOURCES/database.properties
please enter your database details in src/main/resources/database.properties
Managed SRC_MAIN_RESOURCES/applicationContext.xml
Managed ROOT/pom.xml
Managed ROOT/pom.xml
Managed ROOT/pom.xml
Managed ROOT/pom.xml
Managed ROOT/pom.xml
Managed ROOT/pom.xml
Managed ROOT/pom.xml
Managed ROOT/pom.xml
Managed ROOT/pom.xml
Managed ROOT/pom.xml

现在如果比较之前生成的代码,你会发现,Spring Roo 已经帮你在Spring配置文件 applicationContext.xml 中配置好了相应的数据库的 Data Source,并且生成了相的相应的数据库配置模板(src/main/resources/database.properties),在 pom.xml 文件中已经添加 jpa ,数据库驱动相关的依赖。

现在你可以查看默认生成的数据库配置。
roo> database properties
database.driverClassName = com.mysql.jdbc.Driver
database.password =
database.url = jdbc:mysql://localhost:3306
database.username =

你可以手动修改数据库配置,也可以在 Spring Roo 命令行中完成。

设置数据库用户名。

roo> database set -key database.username -value root
Managed SRC_MAIN_RESOURCES/database.properties

设置数据库密码。

roo> database set -key database.password -value root
Managed SRC_MAIN_RESOURCES/database.properties

设置数据库url连接地址。

roo> database set -key database.url -value jdbc:mysql://localhost:3306/posts?useUnicode=true&characterEncoding=UTF-8
Managed SRC_MAIN_RESOURCES/database.properties

在MySQL 数据库创建创建数据库posts,在Terminal 使用mysqladmin 命令,你也可以使用自己熟悉的 MySQL 客户端工具来完成。

mysqladmin create posts --default-character-set=utf8  -uroot -p

输入密码,一个posts数据库就创建好了。

现在我们回到 roo shell中,查看一下数据库配置。

roo> database properties
database.driverClassName = com.mysql.jdbc.Driver
database.password = root
database.url = jdbc:mysql://localhost:3306/posts?useUnicode=true&characterEncoding=UTF-8
database.username = root

所有的数据库配置选项已经修改了。

3. 创建 Domain Class
现在如果输入 hint ,可以看到以下信息。

roo> hint                                        
You can create entities either via Roo or your IDE.
Using the Roo shell is fast and easy, especially thanks to the TAB completion.

Start by typing 'new p' and then hitting TAB twice.
Enter the -name in the form '~.domain.MyEntityClassName'
In Roo, '~' means the -topLevelPackage you specified via 'create project'.

Afer specify a -name argument, press SPACE then TAB. Note nothing appears.
Because nothing appears, it means you've entered all mandatory arguments.
However, optional arguments do exist for this command (and most others in Roo).
To see the optional arguments, type '-' and then hit TAB. Mostly you won't
need any optional arguments, but let's select the -testAutomatically option
and hit ENTER. You can always use this approach to view optional arguments.

After creating an entity, use 'hint' for the next suggestion.

创建一个 Post 类。
roo> new persistent class jpa -name ~.domain.Post -

按下 Tab ,你有三种选择,你可以创建一个抽象类,或者从其它类继承。

new persistent class jpa -name ~.domain.Post -abstract
new persistent class jpa -name ~.domain.Post -extends
new persistent class jpa -name ~.domain.Post -testAutomatically

这里输入 t 按 Tab 键选择 -testAutomatically 同时创建一个测试类。

roo> new persistent class jpa -name ~.domain.Post -testAutomatically
Created SRC_MAIN_JAVA/roodemo/domain
Created SRC_MAIN_JAVA/roodemo/domain/Post.java
Created SRC_TEST_JAVA/roodemo/domain
Created SRC_TEST_JAVA/roodemo/domain/PostDataOnDemand.java
Created SRC_TEST_JAVA/roodemo/domain/PostIntegrationTest.java
Created SRC_MAIN_JAVA/roodemo/domain/Post_Roo_Plural.aj
Created SRC_MAIN_JAVA/roodemo/domain/Post_Roo_Entity.aj
Created SRC_MAIN_JAVA/roodemo/domain/Post_Roo_ToString.aj
Created SRC_MAIN_JAVA/roodemo/domain/Post_Roo_Configurable.aj
Created SRC_TEST_JAVA/roodemo/domain/PostIntegrationTest_Roo_Configurable.aj
Created SRC_TEST_JAVA/roodemo/domain/PostDataOnDemand_Roo_DataOnDemand.aj
Created SRC_TEST_JAVA/roodemo/domain/PostIntegrationTest_Roo_IntegrationTest.aj
Created SRC_TEST_JAVA/roodemo/domain/PostDataOnDemand_Roo_Configurable.aj

这里 ~ 代表创建项目指定的 topLevelPackage 值。所有的 .aj 文件都是 AspectJ 文件 ,对于不熟悉AspectJ 的人来讲,可能对生成的代码有些令人费解。
不过,我们完全没有必要关心 .aj 的内容,可以以此为基础添加自己的代码。
下面往 Post 中添加一些字段,这里全部略去了Roo shell 的输出。

roo> add field string -fieldName title -notNull -sizeMax 200
roo> add field string -fieldName content -notNull -sizeMax 2000
roo> add field date jpa -fieldName createdDate -type java.util.Date
roo> add field date jpa -fieldName modifiedDate -type java.util.Date

创建另外一个类 Comment。

roo> new persistent class jpa -name ~.domain.Comment -testAutomatically
roo> add field string -fieldName name -notNull -sizeMax 200
roo> add field string -fieldName email -notNull -sizeMax 50
roo> add field string -fieldName content
roo> add field string -fieldName url
roo> add field date jpa -fieldName createdDate -type java.util.Date

添加关联关系。
roo> add field set jpa -fieldName comments -element ~.domain.Comment -class ~.domain.Post -mappedBy post
roo> add field reference jpa -fieldName post -type ~.domain.Post -class ~.domain.Comment

如果细心的话你可以注意,这里我们指定了一个 -class 参数,在默认情况下,不添加 -class 参数会修改刚刚创建类,而这里通过 -class 参数可以指定将内容添加到哪个类中。


4. 创建 Web Controller类

Spring 可以为我们生成最基本的CURD页面。

roo> new controller automatic -formBackingObject roodemo.domain.Post -name roode roodemo.web.PostController 
Created SRC_MAIN_JAVA/roodemo/web
Created SRC_MAIN_JAVA/roodemo/web/PostController.java
Created SRC_MAIN_JAVA/roodemo/domain/CommentEditor.java
Created SRC_MAIN_JAVA/roodemo/web/PostController_Roo_Controller.aj
Created SRC_MAIN_WEBAPP/images
Created SRC_MAIN_WEBAPP/images/banner-graphic.png
Created SRC_MAIN_WEBAPP/images/springsource-logo.png
Created SRC_MAIN_WEBAPP/images/list.png
Created SRC_MAIN_WEBAPP/images/show.png
Created SRC_MAIN_WEBAPP/images/create.png
Created SRC_MAIN_WEBAPP/images/update.png
Created SRC_MAIN_WEBAPP/images/delete.png
Created SRC_MAIN_WEBAPP/styles
Created SRC_MAIN_WEBAPP/styles/roo.css
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/header.jsp
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/footer.jsp
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/includes.jsp
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/dataAccessFailure.jsp
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/uncaughtException.jsp
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/post
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/post/list.jsp
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/post/show.jsp
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/post/create.jsp
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/post/update.jsp
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/menu.jsp
Managed SRC_MAIN_WEBAPP/WEB-INF/jsp/menu.jsp
Created SRC_MAIN_JAVA/roodemo/domain/CommentEditor_Roo_Editor.aj

roo> new controller automatic -formBackingObject ~.domain.Comment -name ~.web.CommentController
Created SRC_MAIN_JAVA/roodemo/web/CommentController.java
Created SRC_MAIN_JAVA/roodemo/domain/PostEditor.java
Created SRC_MAIN_JAVA/roodemo/web/CommentController_Roo_Controller.aj
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/comment
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/comment/list.jsp
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/comment/show.jsp
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/comment/create.jsp
Created SRC_MAIN_WEBAPP/WEB-INF/jsp/comment/update.jsp
Managed SRC_MAIN_WEBAPP/WEB-INF/jsp/menu.jsp
Created SRC_MAIN_JAVA/roodemo/domain/PostEditor_Roo_Editor.aj

5. 运行程序
退出roo shell,在项目根目录中运行 mvn tomcat:run ,以嵌入式方式运行 tomcat。
浏览器打开 http://localhost:8080/ 。


接下的一些博文会关注如何添加一些其它功能,如安全,邮件等。
分享到:
评论

相关推荐

    spring roo使用文档

    - **Spring Roo** 是一个基于命令行的工具,旨在简化 Spring 应用程序的开发过程。 - **功能定位**:它通过提供一系列预定义的命令来加速应用程序的开发周期,尤其适用于那些希望快速构建原型或小型项目的开发者。 -...

    Spring Roo In Action

    Spring Roo是一个轻量级的Java开发工具,用于快速搭建Spring应用。它采用了一种新的方式来开发Spring应用程序,即通过命令行而非传统的集成开发环境(IDE)。Spring Roo提供了一系列命令,使得开发者可以轻松地创建...

    Spring Roo 简介,第 4 部分: 用 Spring Roo 和 Cloud Foundry 在云中快速开发应用程序

    总结来说,Spring Roo 为 Java 开发者提供了一个高效开发工具,而 Cloud Foundry 则是一个强大的云平台,两者结合使用可以加速应用程序的开发和部署流程,尤其适合敏捷开发和DevOps实践。通过学习和实践,开发者可以...

    spring roo in action

    Spring Roo是一个用于快速开发Java应用程序的框架,它结合了Spring生态系统的强大功能,尤其是对Spring MVC、Spring Security、Spring Tiles、Spring Web Flow以及Spring测试支持等方面。 Spring Roo利用了一种...

    Spring ROO

    例如,你可以使用ROO命令来创建一个新的Spring项目,包括Maven或Gradle构建文件、基本的项目结构以及必要的依赖。ROO还可以自动生成领域模型类、数据访问对象(DAO)、服务层接口和实现,甚至包括JPA实体的元数据。...

    Spring Roo命令文档

    Spring Roo可以通过`project`命令创建一个新的Maven或Gradle项目。开发者可以指定项目名称、组织ID、语言(如Java或Groovy)和Java版本。例如,`project --topLevelPackage ...

    spring roo 1.1.3 学习资料

    Spring Roo是Spring框架家族中的一个创新工具,旨在简化Java应用程序的开发过程,特别是企业级应用。它基于Spring的模块化架构,提供了一种快速开发、自动化代码生成和最佳实践集成的解决方案。Spring Roo 1.1.3是该...

    spring-roo-docs

    该教程旨在教授开发者如何使用SpringRoo从零开始构建一个完整的Web应用,并涵盖以下几个方面: - 项目初始化与配置 - 实体类与字段的创建 - 集成测试 - Web层的构建 - 应用程序的安全性 - 用户界面的定制 - 自动化...

    spring roo 生成数据库表

    Spring Roo是Spring框架家族中的一个工具,用于加速Java开发,特别是企业级应用的构建。它通过命令行界面或集成开发环境(IDE)插件提供了一种快速开发的方式,可以帮助开发者生成代码、设置依赖和配置,使得开发...

    SpringRoo 官方文档-版本 2.0.0.RC1

    **SpringRoo 版本 2.0.0.RC1** 是一个重要的里程碑,标志着 SpringRoo 向更加成熟和强大的方向发展。这一版本在多个方面进行了改进,包括增强的可扩展性、改进的用户体验以及更紧密地与Spring技术栈集成。 #### 二...

    springroo快速学习

    SpringRoo是一个基于Java的开发工具,旨在加速Spring框架的应用程序开发。它通过自动化许多常见的配置和代码生成任务,使得开发者能够更专注于业务逻辑,而不是基础架构。在本"SpringRoo快速学习"资料中,我们将深入...

    spring-roo-1.1.5.RELEAS

    Spring Roo是Spring框架家族中的一个开发工具,它旨在加速Java应用程序的开发过程,特别是通过提供命令行接口和集成开发环境(IDE)插件来简化常见的编程任务。标题"spring-roo-1.1.5.RELEASE"指的是Spring Roo的一...

    spring-roo-2.0.0.RC1.zip

    Spring Roo是Spring框架家族中的一个开源工具,旨在简化Java应用程序的开发过程,特别是Spring MVC和Spring Data应用。这个"spring-roo-2.0.0.RC1.zip"压缩包包含的是Spring Roo的2.0.0 Release Candidate 1版本,这...

    spring-roo-1.3.2.zip

    Spring Roo是Spring框架家族中的一个开发工具,它旨在加速Java应用程序的开发过程,特别是通过自动化常见任务和提供代码生成功能。Spring Roo 1.3.2是该工具的一个版本,其发布版本为RELEASE,意味着它是稳定且可供...

    Spring Roo 简介

    - **零运行时依赖**:Spring Roo 是一个开发时间工具,意味着生成的应用程序在运行时不依赖于 Roo,从而不会带来性能负担。 - **易用性**:Roo 提供了一个直观的命令行界面,即使对于新手也易于上手。 #### 三、从...

    os-springroo2-sample_code

    【os-springroo2-sample_code】项目是一个关于Spring Roo的示例代码库,它展示了如何使用Spring Roo框架来快速开发应用程序。Spring Roo是Spring框架的一部分,它提供了一种简化和加速Java应用开发的方式,通过自动...

    Spring Roo - Reference Documentation

    对于追求高效开发、注重代码质量和可维护性的开发者而言,Spring Roo无疑是一个值得深入探索和掌握的强大工具。 通过本文的深入解析,我们不仅领略了Spring Roo的核心理念和关键技术,还了解了如何通过其实现项目...

    spring-roo-1.1.0.M1.zip_54587.m1_M1 ssh_Spring Roo download_spri

    Spring Roo是Spring Framework的一个附加工具,它为Java开发者提供了一个快速开发平台,旨在简化和加速应用程序的构建过程。"spring-roo-1.1.0.M1.zip_54587.m1_M1 ssh_Spring Roo download_spri"这个标题暗示了这是...

    spring roo action

    通过一个简单的命令行界面(CLI),Spring Roo 可以创建和管理基于 Spring 的应用程序,同时添加并配置诸如 JPA、Spring MVC、Web Flow、JMS、电子邮件以及 Spring 安全等特性。此外,Spring Roo 还可以利用 JUnit ...

Global site tag (gtag.js) - Google Analytics