spring roo 语法

比较新的东西,其实可以当作一个spring project的最佳实践进行学习,其中包含了许多内容,也让我感觉多了学习的乐趣. 

内容摘自官方文档 
类似代码生成器,应该说更高级一些,与Rails,Grails的命令台功能类似 
1:下载Release版的压缩包,解压缩后在环境变量中设置对应的home与path 
2:在cmd命令台中,运行roo执行操作 
可以通过安装基于Eclipse的SpringSource Tool Suite's工具集,为roo开发提供便利 

十分钟内创建Web应用 
hint命令.提供了类似向导的工具,提供了step by step的方式,指导创建一个应用.也可以加入指定的类型参数,获取指定的帮助信息,如hint controllers 

project命令,用于在当前目录创建一个roo project, 
persistence命令,用于创建数据库相关文件, 
    persistence setup --provider HIBERNATE --database MSSQL //这里为选择的数据类型 
    然后根据提示修改对应的src/main/resources/database.properties,完成数据库的细节设置 
entity命令,用于创建基础的POJO对象, 
entity --class ~.Timer --testAutomatically //TImer为类名 
field命令,用于为该Pojo对象添加属性 
field string --fieldName message --notNull 
controller命令,为pojo对象提供基于Spring MVC的功能,采用最新的RESTful风格 
    controller all --package ~.web //表示将会在当前目录下创建web子目录,存放controller文件 
selenium test命令,用于为类创建对应的测试代码 
selenium test --controller ~.web.TimerController 
perform命令,用于执行不同的操作,如测试.打包,以及转换成能够使用IDE导入的方式, 
通过执行perform,也可以自动下载所需的依赖jar包 

roo> perform tests 
roo> perform package 
roo> perform eclipse 
如果出现jar缺失,比如对应的sql数据库jdbc包,可以通过手动在pom.xml下加入依赖的方式,提供扩展     
打包后,就可以直接将war包放入到tomcat中运行,其中注意访问的url与war包名字一致 

Roo Samples Script 一些Roo目录下的脚本 
应该使用用于将一系列的命令,保存在脚本中,然后通过命令进行批量执行这些命令 
script --file filename.roo 
clinic.roo:  -- 包含了一个完整的宠物商店的例子 
vote.roo: 包含了Spring Security的例子 
RSVP: 详细的使用了除去Spring本身功能的,Spring roo中的其他设置选项,(其实也没有那么多东西) 

安装数据库时,选择会根据JPA标准显示三个,比较常用的应该就是hibernate,比较传统的hibernate使用,生成的代码更偏向JPA标准模式 
开发过程中,可以使用内置的内存数据库HYPERSONIC_IN_MEMORY,由maven提供插件支持 

创建类时,可以通过~.根据工程的top package目录进行子目录的设置,而类名为最后的一个字符串(注意) 
如entity --class ~.domain.Topping 设置类名为Topping 

除了hint向导外,也提供了help命令,用于完整的command帮助 
project 目录下的log.roo文件,将会记录所执行过的command 
在生成Java代码时,roo应该是通过Java类与AspectJ类的方式,同时生成最终功能代码,使用AOP的方式编程 

在创建pojo属性的同时,可以提供为其添加基于jsr303的 annotation的验证 
在对class操作后,roo会自动跳转后续都为其进行操作,可以通过在操作时,设置不同的--class属性进行选择 
如 class --class Base 就可以跳转到对应的Base类 

建立实体类的一对多关系 
field set --fieldName toppings --element ~.domain.Topping 
为当前类添加一个属性toppings,表示拥有多个的Topping对象 
主要为set的使用,以及后续的element属性 

在roo project中,同样也可以使用maven进行测试,打包等操作 

创建web层 
controller命令的使用 
controller all --package ~.web //创建所有entity的controller,并且放置在子web目录下,并且会自动生成所需的web.xml等配置文件,以及添加spring MVC和URL rewrite,Tiles 

可以使用mavan的命令,直接对roo项目进行部署测试 
'mvn tomcat:run, 或者 mvn jetty:run 

为程序添加安全支持 spring Securing 
security setup命令:进行安装,注意必须在创建Web layer后,才可以进行添加. 
会添加对应的applicationContext-security.xml文件 
在页面中,meun.jspx可以使用<sec:authorize ifAllGranted="ROLE_ADMIN"> 对菜单进行配置 
在controller中,可以通过注解进行配置权限 
@RooWebScaffold(path = "pizzaorder", 
automaticallyMaintainView = true, 
formBackingObject = PizzaOrder.class, 
delete=false, 
update=false) 
用于配置roo移除该controller的删除和更新的方法 
http://localhost:8080/pazzashop/login 用于提供用户登录 


定义UI界面 
一般情况下,如果对entity对象进行了修改,会自动印象对应的controller与jsp界面,可以通过@RooWebScaffold(automaticallyMaintainView=false)配置,用于取消自动关联 

Selenium Tests  Selenium测试 
自动生成对应的脚本,使用如下命令执行测试 
selenium test --controller ~.web.ToppingController 

也可以通过执行mvn selenium:selenese,使用mvn进行测试,区别在于.会打开firefox查看测试结果 

Backups and Deployment 备份与部署 
backup命令,用于创建一个保存了当前项目代码,日志和脚本记录的备份zip文件 
perform package命令,用于生成部署所需的war包 

区别于原来的dao service controller层次架构,roo的项目中,只有entity(类似dao)以及web层,通过使用jpa的底层,解决了在云计算平台上扩展的问题 

Critical Technologies 
roo peoject 中的两个重要技术, AspectJ与Spring 

roo项目中,会针对class生成对应的*_Roo_*.aj文件,一个或多个, 成为AspectJ ITD文件,由Roo进行自动管理 
所生成的.java类中,代码一般都比较简单,不过都带有许多注解,其中roo开头的注解将不会被编译到class代码中 

当你重写了java文件的toString方法后,会自动删除对应的entity_Roo_ToString.aj文件,如果要重新使用自动生成的toString方法,可以通过annotation进行配置 
@RooToString(toStringMethod="generatedToString"),但是注意这里生成的新的toString方法名为 
generatedToString 

Entity Layer 类(Domain层) 
可以通过jpa的annotation对其进行修改,比如对其添加非空验证,修改其映射的表名等 

@RooJavaBean 用于提供pojo对象的get和set方法,如果手动编写了get和set方法,那将会自动跳过 
@RooEntity 为entity提供对应的JPA操作类 

Web Layer 
使用spring mvc提供了web的基本脚手架,包含了REST风格的URL rewrite,Apache Tiles,Spring JavaScript.以及一键式的命令为其添加Spring Security 

Usage and Conventions 用法与公约 

Add-On 插件安装和删除 
下载后放置在$ROO_HOME/add-ons目录下,使用addon cleanup command,还包括$ROO_HOME/work的使用..(文档有些纠结) 

在spring roo的project中,将一个class进行了分解,如entity类,通过修改分离get/set 
,toString,以及对应的Dao方法,分别放在不同的类中,这样便于代码的阅读,在编译后,生成对应的代码....这个需要研究一下 
同理,在controller中,分解成两个类,一个包含了传统的controller方法,则另外一个可以用于扩展 

Base Add-Ons 
目前插件开发的文档并没有写出,可能还未开发,不过如果要学习,就必须先开始了目前Roo 
project中所使用的框架 

目前roo中集成了 Jms email,jpa,spring security,selenium.spring web flow 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值