Produk’ve Entwicklung mit Spring Roo Eberhard Wolff SpringSource – A division of VMware
Jul 12, 2015
About Eberhard Wolff • Principal Technologist • Consultant & Trainer • Author (e.g. first German Spring book)
• [email protected] • TwiGer: @ewolff • Blog: hGp://ewolff.com • hGp://slideshare.net/ewolff
"Roo's mission is to fundamentally and sustainably
improve Java developer productivity without
compromising engineering integrity or flexibility"
Roo's Mission Statement
"Roo is a little genie who sits in the background and handles the
things I don't want to worry about"
End User
You saw… • Domain objects • Finder • MVC support • Web applica'on customiza'on • Embedding TwiGer/Google Docs etc. • I18n • Security
• You can add your own code
Not shown • Database reverse engineering • JSON • GWT support • SOLR support (search) • Spring Web Flow support • SELENIUM web tests • Google App Engine Support
Roo Benefits • Proven language, tooling, libraries … • No run'me overhead • Can be removed from project (Inter type declara'on push in)
• Can also be used from the shell (with vi or Emacs) • Extensions possible
Roo Infrastructure
Implementa'on Overview
User's Project
.aj .xml .jsp .properties
Roo Add-Ons Roo
Add-Ons Roo Add-Ons @Roo
Annotations provide
source only retention
.java
monitor and change
Roo Add-Ons
STS
Shell
AspectJ ITDs
Ac've Genera'on
Person_Roo_ ToString.aj
toString():String
Person.java
name:String
write
Person_Roo_ JavaBean.aj
getName():String
setName(String):void
read Roo Add-Ons Roo
Add-Ons Roo Add-Ons Roo
Add-Ons
Person.class
name:String toString():String
getName():String setName(String):void
AspectJ Compiler
read read
write Compilation unit separation with automated round-trips
Add ons • May add commands • May add ITDs or other files
• Can be ac'vated if changes occur • Metadata events send out
Removing Roo in Three Steps 1 Use AJDT's “push-‐in refactoring” feature
– This moves the Roo .aj content into normal .java files 2 Remove Roo's annota'on JAR from your POM
– You can use Roo's “dependency remove” command 3 Remove @Roo* annota'ons from .java files
– Use a regular exp find/replace in Eclipse for speed
• You can s'll use Roo on the project again – Its “hands off by default” will ensure it's problem-‐free
A division of VMware
Lightweight App Run'me
Virtual App Environment
Hybrid Cloud
Spring tc Server
VM
Spring tc Server
Lightweight App Framework
Conclusion • Roo is based on established technologies
• Spring, AspectJ, JPA… • ITDs separate clearly generated from non-‐generated code
• Tackles build, development tool etc • Flexible architecture: You can add your own add ons
• And: Spring Insight can be used for performance op'miza'on of Spring Apps