Spring Roo 绠€浠嬶紝绗?一 閮ㄥ垎: 浠庢簮浠g爜鏋勫缓(杞

Spring Roo 绠€浠嬶紝绗?1 閮ㄥ垎: 浠庢簮浠g爜鏋勫缓(杞?

绠€浠?/h2>

Spring 妗嗘灦浜?2002 骞村勾搴曞彂甯冿紝鐩殑鍦ㄤ簬绠€鍖?J2EE锛堢洰鍓嶆槸 JavaEE锛夊紑鍙戙€傚湪杩囧幓 8 骞翠腑锛孲pring 鎴愬姛瀹屾垚浜嗚浣垮懡锛屾彁渚涗簡 Java 绀惧尯妗嗘灦鎴栧姛鑳斤紝姣斿 Spring Security銆丼pring MVC銆佷簨鍔$鐞嗐€丼pring 鎵瑰鐞嗗拰 Spring 闆嗘垚锛岃繖閮芥槗浜庣悊瑙e拰浣跨敤銆係pring 甯屾湜璁?Java 寮€鍙戜汉鍛樼殑宸ヤ綔鏇磋交鏉俱€佹洿瀵屾垚鏁堛€備负姝わ紝Spring 鍒涘缓浜嗕竴涓悕涓?Spring Roo 鐨勫紑鍙戝伐鍏枫€?/p>

Spring Roo锛堝弬瑙?鍙傝€冭祫鏂?/a>锛夋槸閽堝 Java 鎶€鏈殑涓€涓彲鎵╁睍鐨勩€佸熀浜庢枃鏈殑寮€婧?RAD 宸ュ叿銆傚畠鏄敤浜庡垱寤哄拰绠$悊鍩轰簬 Spring 鐨勫簲鐢ㄧ▼搴忕殑涓€涓己澶ц祫婧愩€傝繖閲屾槸浠诲姟璇存槑锛?/p>

Roo 鐨勪换鍔℃槸浠庢牴鏈笂鍙寔缁湴鏀瑰杽 Java 寮€鍙戜汉鍛樼殑鐢熶骇鏁堢巼锛岃€屾棤鎹熷伐绋嬪畬鏁存€у拰鐏垫椿鎬с€?/strong>

杩欎竴瑕佹眰杞崲涓烘瀯寤轰簬 Java 鎶€鏈箣涓婄殑涓€绉嶅伐鍏凤紝鍙寔缁湴澧炲姞椤圭洰鏁翠釜鐢熷懡鍛ㄦ湡鐨勭敓浜ф晥鐜囷紝涓斾笉闄愬畾寮€鍙戜汉鍛樹娇鐢ㄦ煇涓€鐗瑰畾鏂规硶銆係pring Roo 浣跨敤娴佽銆佸彲闈犲拰鎴愮啛鐨勫簱锛屾瘮濡?Spring 妗嗘灦銆丣ava 鎸佷箙鍖?API銆丣ava Server Pages (JSP)銆丼pring Security銆丼pring Web Flow銆丩og4J 鍜?Maven銆俁oo 鐢熸垚鐨勫簲鐢ㄧ▼搴忎娇鐢?Bean Validation (JSR-303) 鍜?Dependency Injection (JSR-330) 杩欐牱鐨勬爣鍑嗭紝涓旈伒寰渶浣冲疄璺?SpringSource 璁よ瘉鐨勫簲鐢ㄧ▼搴忔灦鏋勩€?/p>

浣跨敤 Spring Roo锛屾偍鍙互娣诲姞鍜岄厤缃?JPA銆丼pring MVC銆丼pring Security 绛夊姛鑳斤紝浣跨敤 Log4j 杩涜鏃ュ織璁板綍锛屾祴璇?JUnit 鍜?Selenium銆丼olr銆丣MS銆佺數瀛愰偖浠剁瓑妗嗘灦锛屼粎闇€鍦?Roo shell 涓婅緭鍏ュ懡浠ゅ嵆鍙€備娇鐢?Roo 娣诲姞杩欎簺鍔熻兘鑺傜渷鐨勬椂闂存彁楂樹簡寮€鍙戜汉鍛樼殑鐢熶骇鏁堢巼銆俁oo 涓嶈兘缂栧啓涓氬姟閫昏緫锛屼絾鍙互绠$悊搴旂敤绋嬪簭鐨勫熀纭€缁撴瀯鎴栭厤缃€?/p>

Roo 鏄竴涓紑鍙戞椂闂村伐鍏凤紝杩欐剰鍛崇潃搴旂敤绋嬪簭鍦ㄨ繍琛屾椂鐙珛浜?Roo銆傜敱浜?Roo 鍦ㄨ繍琛屾椂涓嶅瓨鍦紝瀹冩病鏈変换浣曟€ц兘鎴栧唴瀛樺紑閿€銆傝繖纭繚鎮ㄤ笉渚濊禆浜?Spring Roo锛屾偍鍙渶鍑犱釜鎸夐敭鍗冲彲闅忔椂浠庢偍鐨勯」鐩腑鍒犻櫎 Roo銆?/p>

鏈枃璁ㄨ濡備綍浣跨敤 Roo shell 鏋勫缓绠€鍗曠殑 web 搴旂敤绋嬪簭锛屽苟灞曠ず濡備綍鍦?Windows 鎴?Ubuntu 鏈哄櫒涓婄紪璇?Spring Roo 婧愪唬鐮併€?/p>

寮€濮嬩娇鐢?Roo shell

閫?杩囧姞杞?Roo shell 骞朵娇鐢ㄥ懡浠や笌涔嬩氦浜掞紝鎮ㄥ彲浠ョ鐞嗗拰閰嶇疆搴旂敤绋嬪簭銆俁oo Shell 鏄竴涓埗琛ㄥ畬鎴愮殑銆佷笂涓嬫枃鎰熺煡鐨勩€佹彁渚涙彁绀虹殑鍛戒护 shell銆傛偍鍙互浣跨敤 hint 鍛戒护璇㈤棶 Spring Roo 鎮ㄧ殑涓嬩竴姝ラ€昏緫鎿嶄綔銆俁oo 瓒冲鏅鸿兘锛屽彲閫氳繃鍒ゅ畾搴旂敤绋嬪簭涓婁笅鏂囧缓璁笅涓€姝ヨ鍔ㄣ€備緥濡傦紝姣旀柟璇存偍浣跨敤 entity 鍛戒护鍒涘缓浜嗕竴涓疄浣撱€傜劧鍚庤緭鍏?hint 鍛戒护銆俁oo 浼氬憡璇夋偍搴斿綋浣跨敤 field 灏嗗瓧娈垫坊鍔犲埌鎮ㄧ殑瀹炰綋銆傝鐗规€у噺灏戜簡 Roo 鐨勬蹇垫潈閲嶏紝浣垮叾鎴愪负涓€涓紭绉€鐨勫涔犲伐鍏枫€傛偍鍙互璺熼殢 Roo help 鍜?hint 鍛戒护鍒涘缓瀹屽叏鐨勫簲鐢ㄧ▼搴忥紝鏃犻渶鍙傝€冩枃妗c€?/p>

鍏堝喅鏉′欢

鍦ㄥ紑濮嬩娇鐢?Roo 涔嬪墠锛岀‘淇濇偍瀹夎浜嗭細

  1. Java V6 JDK
  2. Apache Maven V2.0.9 鎴栨洿楂?/a>

瀹夎 Spring Roo

瑕佸畨瑁呯嫭绔嬬殑 Spring Roo锛?/p>

  1. 鎮ㄥ彲浠ヤ笅杞?Roo 鐙珛鍛戒护琛?shell 鎴栦娇鐢ㄥ唴缃殑 Roo SpringSource Tool Suite (STS) 鎻掍欢銆傛垜寤鸿涓よ€呴兘涓嬭浇骞朵竴璧蜂娇鐢紝鍥犱负 STS 涓哄熀浜?Spring 鐨勫簲鐢ㄧ▼搴忛€氳繃 Eclipse 鎻愪緵璁稿棰濆鍔熻兘銆?ol class="ibm-alpha-list">
  2. Spring Roo
  3. SpringSource Tool Suite
  • 瑙e帇 Spring Roo 鍒伴€夊畾浣嶇疆銆?/li>
  • 璁剧疆鐜鍙橀噺锛?ol class="ibm-alpha-list">
  • 鍦ㄤ竴鍙?Windows 鏈哄櫒涓婏紝娣诲姞 %ROO_HOME% /bin 鍒拌繖鏍风殑璺緞锛氬叾涓?ROO_HOME 鏄В鍘嬬殑 Roo 鏂囦欢鐨勮矾寰勩€?/li>
  • 鍦ㄤ竴鍙?*nix 鏈哄櫒涓婏紝鍒涘缓鍒?$ROO_HOME/bin/roo.sh 鐨勪竴涓鍙烽摼鎺?

    锛堜緥濡傦紝sudo ln -s ~/spring-roo-1.x.x/bin/roo.sh /usr/bin/roo锛?/p>

  • 鏋勫缓搴旂敤绋嬪簭

    涓哄悜鎮ㄥ睍绀?Roo 鐨勫己澶у姛鑳斤紝璁╂垜浠垱寤轰竴涓畝鍗曠殑浼佷笟浼氳搴旂敤绋嬪簭銆備竴涓細璁簲鐢ㄧ▼搴忔湁涓や釜瀹炰綋锛歋peaker 鍜?Talk銆備竴涓?Speaker 鍙互鎻愪緵涓€娆℃垨澶氭璁茶瘽锛屼笖 Talk 灏嗕粎鐢变竴涓彂瑷€浜烘彁渚涖€傜畝鍗曠殑绫诲浘濡傚浘 1 鎵€绀恒€?/p>

    鍥?1. 绫诲浘 Speaker Talk

    Spring Roo 绠€浠嬶紝绗?一 閮ㄥ垎: 浠庢簮浠g爜鏋勫缓(杞

    鍒涘缓搴旂敤绋嬪簭锛?/p>

    1. 鎵撳紑鎿嶄綔绯荤粺鍛戒护琛?shell銆?/li>
    2. 浣跨敤 mkdir 鍛戒护鍒涘缓涓€涓悕涓?conference 鐨勭洰褰曘€?/li>
    3. 杞埌鎮ㄧ殑 shell 涓殑 conference 鐩綍銆?/li>
    4. 杈撳叆 roo銆傝鍛戒护灏嗗惎鍔?Roo shell锛屽娓呭崟 1 鎵€绀恒€?/li>
    娓呭崟 1. 鍚姩 Roo shell
    C:\Users\xebia\demo\conference>roo
        ____  ____  ____
       / __ \/ __ \/ __ \
      / /_/ / / / / / / /
     / _, _/ /_/ / /_/ /
    /_/ |_|\____/\____/       1.1.B.RELEASE [rev 793f2b0]
    Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
    roo>

    鏃㈢劧鎴戜滑鍦?Roo shell 鍐呴儴锛屾垜浠皢浣跨敤 Roo 鐨?hint 鍛戒护鏉ュ紩瀵兼帴涓嬫潵鐨勬楠ゃ€?code>hint 寤鸿浣跨敤 project 鍒涘缓涓€涓柊鐨勫熀浜?Maven 鐨?Spring 椤圭洰锛堝弬瑙佹竻鍗?2锛夈€?/p>

    娓呭崟 2. 浣跨敤 Roo shell 涓殑 hint
    Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
    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 鈥檖roject鈥?(without the quotes) and then hit TAB.
    
    Enter a --topLevelPackage like 鈥檆om.mycompany.projectname鈥?(no quotes).
    When you're 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 鈥檋int鈥?and ENTER for the next suggestion.
    You're also welcome to visit http://forum.springframework.org`for Roo help.
    roo>

    姝e hint 鍛戒护鎵€寤鸿鐨勶紝鎴戜滑灏嗕娇鐢?project 鍛戒护鍒涘缓涓€涓」鐩€傝鍛戒护鏈変竴涓繀瑕佸睘鎬?topLevelPackage锛岀敤浜庢寚瀹氭牴绋嬪簭鍖呯殑鍚嶇О銆傞櫎浜嗗繀瑕佸睘鎬т箣澶栵紝鎴戜滑灏嗕娇鐢ㄤ袱涓彲閫夊睘鎬э細java锛堟寚瀹?Java 鐗堟湰锛夊拰 projectName锛堟寚瀹氶」鐩悕绉帮級銆傝緭鍏ヤ互涓嬪唴瀹癸細

    	project --topLevelPackage com.dw.roo.conference --java 6 --projectName conference

    璇ュ懡浠ゅ皢鍒涘缓涓€涓?Maven V2 绠$悊鐨勫熀浜?Spring 鐨勯」鐩紝濡備互涓嬭緭鍑烘墍绀猴細

    	Created C:\Users\xebia\demo\conference\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\META-INF\spring
    	Created SRC_MAIN_RESOURCES\META-INF\spring\applicationContext.xml
    	Created SRC_MAIN_RESOURCES\log4j.properties

    鍐嶆杈撳叆 hint 鍚?Roo 璇㈤棶涓嬩竴姝ヨ鍔ㄣ€傝繖娆″畠寤鸿寤虹珛鎸佷箙鍖栨満鍒躲€傚湪 shell 涓婅緭鍏?persistence setup 骞舵寜涓?Tab 涓夋銆傛偍浼氳幏寰?--provider 閫夐」銆傛寜涓?H 鐒跺悗鎸変笅 Tab 瀹屾垚 鈥淗IBERNATE鈥濄€傚湪鎻愪緵鑰呬箣鍚庯紝鎸変笅 tab 閫夋嫨鏁版嵁搴擄紝鎮ㄤ細鐪嬪埌鏈夊ぇ閲忛€夐」銆傚洜涓烘垜浠娇鐢?Hibernate 浣滀负鎴戜滑鐨勬彁渚涜€咃紝鎴戜滑涓嶈兘閫夋嫨闈炲叧绯诲瀷鏁版嵁搴擄紝姣斿 Google App Engine銆傜幇鍦紝鎴戞墦绠椾娇鐢?HYPERSONIC_IN_MEMORY 鏁版嵁搴撱€?/p>

    	persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY

    杩樻湁鍏朵粬鍙€夊睘鎬э紝姣斿鐢ㄦ埛鍚嶅拰瀵嗙爜锛岃繖娆℃垜浠笉闇€瑕佽繖浜涖€?/p>

    鐜板湪鎴戜滑宸茬粡寤虹珛浜嗘寔涔呭寲鏈哄埗锛屾垜浠皢鍐嶆浣跨敤 hint 鍛戒护銆傝繖娆℃垜浠鍛婄煡瑕佷娇鐢?entity 鍛戒护鍒涘缓瀹炰綋銆?code>Entity 鐢ㄤ簬鍒涘缓瀹為檯鍩熷璞★紝涓旀湁涓€涓繀瑕佸睘鎬?class锛岀敤浜庢寚瀹氬疄浣撶殑鍚嶇О銆傞櫎浜嗗繀闇€鐨?--class 灞炴€э紝鎴戜滑杩樺皢浣跨敤 --testAutomatically 灞炴€э紝璇ュ睘鎬т负鍩熷璞″垱寤洪泦鎴愭祴璇曘€傝鎴戜滑鍒涘缓涓や釜瀹炰綋锛歋peaker 鍜?Talk銆?/p>

    	entity --class ~.domain.Speaker 鈥搕estAutomatically
    	
    	entity --class ~.domain.Talk --testAutomatically

    鎴戜娇鐢ㄤ簡 ~ 浣滀负椤圭洰椤剁骇绋嬪簭鍖呯殑鍗犱綅绗︺€?/p>

    Entity 灏嗗垱寤轰竴涓伒娲荤殑銆佺壒鎬т赴瀵岀殑 JPA 瀹炰綋銆傛墍鍒涘缓鐨勫疄浣撳皢鏈?JPA @Entity锛屽甫鏈?ID銆佺増鏈€丒ntityManager 鍜屾棤鍙傛暟鐨勬瀯閫犲嚱鏁般€傛墍鐢熸垚鐨勫疄浣撳皢鎷ユ湁 persist銆乵erge銆乺emove銆乫lush銆乧ount銆乫ind 鍜?findById 绛夋柟娉曘€傚鏋滅湅涓€涓嬭鍛戒护鐨勮緭鍑猴紝鎮ㄤ細娉ㄦ剰鍒拌鍛戒护闄や簡鍒涘缓 Java 鏂囦欢锛堜负 Speaker 鍜?Talk锛夛紝杩樺垱寤轰簡浠?*Roo_*.aj 缁撳熬鐨?AspectJ 鏂囦欢銆傝繖浜?*Roo_*.aj 绉颁负 Intertype Declaration (ITD)銆丮ixins 鎴?Introductions銆俁oo 灏?ITD 浣滀负涓€涓唬鐮佺敓鎴愮殑宸ヤ欢銆侷TDs 鍏佽 Roo 鍦ㄤ竴涓崟鐙殑缂栬瘧鍗曞厓涓敓鎴愪唬鐮侊紝浣?ITDs 鍦ㄧ紪璇戞椂琚悎骞舵垚鍚屼竴涓紪璇戠被銆侫spectJ intertype 澹版槑鐢ㄤ簬鑷姩鐢熸垚 ID 鍜岀増鏈瓧娈碉紝浠ュ強鍩熺被涓寔涔呭寲瀛楁鐨?getters 鍜?setters銆?/p>

    鍐嶆浣跨敤 hint 鎻愪緵寤鸿锛屾牴鎹缓璁娇鐢?field 鍛戒护灏嗗瓧娈垫坊鍔犲埌瀹炰綋銆傝鎴戜滑缁?Speaker 瀹炰綋娣诲姞涓€浜涘瓧娈碉細

    	field string --fieldName firstname --class ~.domain.Speaker --notNull 
    	field string --fieldName lastname --notNull 
    	field string --fieldName email --unique --notNull 
    	field string --fieldName organization 
    	field date --fieldName birthdate --type java.util.Date --past --notNull 
    	field number --type java.lang.Long --fieldName age --min 25 --max 60

    --class 閫夐」鍏佽鎴戜滑鎸囧畾鍚戝摢涓被娣诲姞瀛楁銆?/p>

    field 鍛戒护鍙敤浜庢寚瀹氱壒瀹氫簬 JavaBean 楠岃瘉鐨勬敞閲婏紝鍚湁 --max 鍜?--min 绛夐€夐」銆傚畠杩樺彲鐢ㄤ簬鎸囧畾鐗瑰畾浜?JPA 鐨勬敞閲婏紝鍚湁 --fetch銆?code>--column 鍜?--unique 绛夐€夐」銆傚浜庢棩鏈熷瓧娈碉紝鎮ㄨ繕鍙互鎸囧畾鏃ユ湡搴斿綋鏄繃鍘昏繕鏄皢鏉ワ紝姝e涓婇潰浣跨敤鐨勩€備娇鐢?field锛屾偍鏃犻渶璁颁綇杩欎簺娉ㄩ噴銆?/p>

    鐜板湪璁╂垜浠悜 Talk 瀹炰綋娣诲姞涓€浜涘瓧娈碉細

    	field string --fieldName title --class ~.domain.Talk --notNull 
    	field string --fieldName description --notNull --sizeMax 4000

    鐩墠涓烘锛屾垜浠垱寤轰簡瀹炰綋骞跺悜鍏舵坊鍔犱簡瀛楁锛屼絾鏄垜浠病鏈夋寚瀹氬畠浠箣闂寸殑鍏崇郴銆係peaker 涓?Talk 涔嬮棿鐨勫叧绯绘槸 ONE_TO_MANY锛堜緥濡傦紝涓€涓彂瑷€浜哄彲鍙戣〃澶氭璁茶瘽锛夈€傝繖閫氳繃 field 瀹屾垚锛屽涓嬫墍绀猴細

    	field set --fieldName talks --element ~.domain.Talk --class \
    ~.domain.Speaker --cardinality ONE_TO_MANY
    	
    	field reference --fieldName speaker --type ~.domain.Speaker \
    --class ~.domain.Talk 鈥搉otNull

    鐜板湪鎴戜滑鎯充负浼氳搴旂敤绋嬪簭 scaffold锛堟惌寤猴級 涓€涓?web 灞傦紝鍙€氳繃 controller 鍛戒护瀹屾垚銆傜敓鎴愭帶鍒跺櫒鍜屾墍鏈夌浉鍏?web 宸ヤ欢鏈€鏂逛究鐨勬柟寮忔槸浣跨敤 controller all銆?/p>

    	controller all --package ~.web

    绗?涓€娆′娇鐢ㄦ帶鍒跺櫒鍛戒护杩樹細娣诲姞棰濆鐨勪緷璧栭」鍒版偍鐨勯」鐩腑锛屾瘮濡?Spring MVC 鍜?Tiles銆傝繖鍙兘闇€瑕佷竴浜涙椂闂存潵杩愯锛屽洜涓哄畠闇€瑕佷笅杞芥墍鏈変緷璧栭」锛堝鏋滃畠浠笉瀛樺湪浜庢偍鐨?Maven 瀛樺偍搴撲腑锛夈€傝鍛戒护杩樺睍绀?Roo 鐨勫姛鑳戒箣涓€锛氬彧鏈夊湪闇€瑕佷緷璧栭」鏃舵墠浜堜互娣诲姞銆?/p>

    涓嬩竴姝ワ紝鎴戜滑灏嗕娇鐢?logging 鍛戒护寤虹珛 log4j銆?/p>

    	logging setup --level INFO --package ALL_SPRING

    閫€鍑?Roo shell 涔嬪墠搴斿仛鐨勬渶鍚庝竴浠朵簨鏄紝褰撴垜浠娇鐢?entity 鍛戒护鎸囧畾浜?--testAutomatically 鏃讹紝杩愯鐢熸垚鐨勯泦鎴愭祴璇曘€傝浠?shell 涓繍琛屾祴璇曪紝杈撳叆 perform tests銆?/p>

    Roo 灏嗚皟鐢ㄥ鎵樼粰 Maven 鏉ヨ繍琛屾祴璇曪紝鍥犳 perform tests 绛夊悓浜?mvn test 鍛戒护銆傝緭鍏?q 鎴?quit 閫€鍑?shell銆?/p>

    杩欎簺鍛戒护灏嗗垱寤轰竴涓姛鑳介綈鍏ㄧ殑浼氳搴旂敤绋嬪簭銆傛帴涓嬫潵鎴戜滑灏嗚繍琛岃繖涓簲鐢ㄧ▼搴忋€?/p>

    瑕佽繍琛岃搴旂敤绋嬪簭锛岃緭鍏?mvn tomcat:run锛岃繖灏嗗惎鍔?jetty 鏈嶅姟鍣ㄣ€傛墦寮€ web 娴忚鍣ㄥ苟杞嚦 http://localhost:8080/conference/銆傛偍浼氱湅鍒板浘 2 涓殑灞忓箷銆?/p>

    鍥?2. 浼氳搴旂敤绋嬪簭涓婚〉

    Spring Roo 绠€浠嬶紝绗?一 閮ㄥ垎: 浠庢簮浠g爜鏋勫缓(杞

    鎮ㄥ彲浠ュ崟鍑?Create new Speaker 鍒涘缓涓€涓細璁彂瑷€浜恒€傛偍杩樺彲浠ュ崟鍑?List all Speakers 鏉ユ煡鐪嬨€佺紪杈戝拰鍒犻櫎鐢ㄦ埛銆備互鍚屾牱鐨勬柟寮忥紝鎮ㄥ彲浠ュ垱寤轰竴涓?Talk锛屼絾鏄繀椤诲湪鍒涘缓 Speaker 涔嬪悗銆?/p>

    杩欐槸涓€涓畝鍗曠殑搴旂敤绋嬪簭锛屼絾鏄畠灞曠ず濡備綍鍦ㄦ暟鍒嗛挓鍐呬粠澶磋交鏉惧垱寤轰竴涓柊鐨勫熀浜?Spring 鐨?web 搴旂敤绋嬪簭銆傚湪鏈郴鍒楃殑绗?2 閮ㄥ垎锛屾垜灏嗗悜鎮ㄥ睍绀哄浣曚娇鐢ㄤ笉鍚岀殑 Roo 鍔熻兘鍜岄檮鍔犵粍浠舵瀯寤哄簲鐢ㄧ▼搴忋€?/p>

    鐜板湪鎴戜滑宸茬粡鍒涘缓浜嗕竴涓畝鍗曠殑搴旂敤绋嬪簭锛屾垜灏嗗悜鎮ㄥ睍绀哄浣曞湪 Windows 鍜?Ubuntu 涓婄紪璇?Spring Roo 婧愪唬鐮併€?/p>

    浠庢簮浠g爜鏋勫缓 Spring Roo

    Spring Roo V1.1.0 鏄渶鏂板彂甯冪増鏈紝鐩墠姝e湪绉瀬寮€鍙?V1.1.1 鐗堟湰銆傛偍鍙兘闇€瑕佷粠婧愪唬鐮佹瀯寤?Spring Roo 鐨勫師鍥犲涓嬶細

    1. Spring Roo 涓嶆彁渚涘闂存瀯寤猴紝鍥犳濡傛灉鎮ㄥ笇鏈涗娇鐢?Spring Roo 鐨勬渶鏂板姛鑳斤紝灏遍渶瑕佺紪璇?Spring Roo 鐨勬簮浠g爜銆?/li>
    2. 鎮ㄥ笇鏈涗负 Spring Roo 椤圭洰鍋氫换浣曠被鍨嬬殑寮€鍙戙€?/li>
    3. 鎮ㄥ笇鏈涗负 Spring Roo 缂栧啓闄勫姞缁勪欢銆?/li>
    4. 鎮ㄥ彧甯屾湜鎶婄帺涓€涓?Spring Roo 浠g爜锛岀湅鐪嬪畠鏄浣曞疄鐜版垨缂栧啓鐨勩€?/li>

    缁撴灉

    鍦?鏈儴鍒嗙粨灏撅紝鎮ㄥ皢鑳藉鍦?Windows 鍜?*nix 绯荤粺涓婃垚鍔熻繍琛屾渶鏂?Spring Roo 婧愪唬鐮佺殑 Maven 鐗堟湰銆傛偍灏嗚兘澶熶娇鐢ㄦ渶鏂扮殑 Spring Roo 骞跺皢 Spring Roo 椤圭洰瀵煎叆 Eclipse 鎴?STS (SpringSource Tool Suite)銆?/p>

    鍦?Ubuntu 涓婄紪璇?Spring Roo 婧愪唬鐮佺殑杩囩▼

    鍦?Ubuntu锛堝拰鍏朵粬 *nix 绯荤粺锛変笂缂栬瘧婧愪唬鐮佸緢瀹规槗銆傚彧闇€閬靛惊浠ヤ笅姝ラ锛?/p>

    1. 瀹夎 Git锛屼竴涓垎甯冨紡婧愪唬鐮佹帶鍒剁鐞嗙郴缁熴€傝鍦?Ubuntu 绯荤粺涓婂畨瑁呭畠锛岃緭鍏?sudo apt-get install git-core gitk銆?/li>
    2. 杈撳叆 git clone git://git.springsource.org/roo/roo.git锛屼娇鐢?Git 绛惧嚭 Spring Roo銆傛偍灏嗗湪涓荤洰褰曚腑鐪嬪埌涓€涓?roo 鏂囦欢澶癸紝鍏朵腑鍖呭惈鎵€鏈?Roo 婧愪唬鐮併€?/li>
    3. GnuPG 鏀寔鏁版嵁鍜岄€氫俊鐨勫姞瀵嗗拰绛惧悕锛屼笖浠ヤ竴涓鍔熻兘鐨勫瘑閽ョ鐞嗙郴缁熷拰鍚勭鍏挜鐩綍鐨勮闂ā鍧椾负鐗硅壊銆俁oo 浣跨敤 GPG 鏉ヨ嚜鍔ㄧ鍚嶇紪璇戣緭鍑恒€?/li>
    4. 瑙﹀彂鍛戒护 gpg --list-secret-keys銆傝緭鍑哄簲褰撶被浼间簬娓呭崟 3銆?
      娓呭崟 3. gpg list 鍛戒护鐨勭粨鏋?/h5>
      C:\dev\roo-sourcecode\roo>gpg --1ist-secret-keys
      C:/Users/xebia/AppData/Roaming/gnupg\secring.gpg
      sec 2048R/2F96093B 2010-07-03
      uid                shekhar (spring-roo) <shekhargu1ati84@gmai1.com>
      ssb 2048R/B77E5C63 2010-07-03
      C:\dev\roo-sourcecode\roo>_
    5. 濡傛灉鎮ㄧ湅涓嶅埌杈撳嚭锛岄鍏堝繀椤诲垱寤轰竴涓瘑閽ャ€備娇鐢?gpg 鈥揼en-key锛屽畠灏嗗紩瀵兼偍閫愭鍒涘缓瀵嗛挜銆傜劧鍚庝娇鐢?gpg 鈥搇ist-secret-keys 楠岃瘉鎮ㄦ柊鍒涘缓鐨勫瘑閽ュ凡鐢熸垚銆?/li>
    6. 鎺ヤ笅鏉ワ紝鎮ㄩ渶瑕佸彂甯冩偍鐨勫瘑閽ュ埌鍏挜鏈嶅姟鍣ㄣ€傛敞鎰?鈥搇ist-secret-keys 涓樉绀虹殑 sec 瀵嗛挜 ID銆傚湪鎴戠殑渚嬪瓙涓紝瀵嗛挜 ID 鏄?2F96093B銆傞€氳繃 gpg 鈥搆eyserver hkp://pgp.mit.edu 鈥搒end-keys 2F96093B 灏嗘偍鐨勫叕閽ユ帹閫佸埌涓€涓瘑閽ユ湇鍔″櫒锛堝湪缁撳熬鏇存敼瀵嗛挜 ID锛夈€?/li>
    7. 涓€浜?Roo 妯″潡闇€瑕佸凡缁忎笉浠?OSGi 褰㈠紡瀛樺湪鐨?JAR銆傚嵆锛屽畠浠病鏈変竴涓?OSGi 鎰熺煡鐨勬竻鍗曘€俁oo 鏈変竴涓О涓?wrapping 鐨勭壒娈婇」鐩紝鍙皢甯告€?JAR 杞寲涓?OSGi JAR銆傛偍闇€瑕佸湪璇曞浘浣跨敤 Roo 涔嬪墠杩愯鍖呰绋嬪簭銆傛病鏈夊寘瑁呯▼搴忥紝鎮ㄥ皢鐪嬪埌閿欒锛岃 Maven 鏃犳硶鎵惧埌 org.springframework.roo.wrapping.some_module銆傝鍒涘缓 JAR 鏂囦欢鍖咃紝浠庢牴 Roo 绛惧嚭浣嶇疆杈撳叆锛?
      	cd wrapping
      	mvn clean install 
      	cd..
    8. 鎺ヤ笅鏉ワ紝杩愯 mvn clean install 鍛戒护銆傦紙Maven V2 搴斿綋瀹夎鍦ㄤ簡鎮ㄧ殑绯荤粺涓娿€傚鏋滄病鏈夛紝绔嬪嵆瀹夎瀹冦€傦級姣忔缂栬瘧婧愪唬鐮佹椂锛孧aven 灏嗘彁绀烘偍杈撳叆鎮ㄧ殑瀵嗛挜鐨勫瘑鐮?鍙d护锛堟偍杈撳叆浜嗗彛浠ょ殑鍚屾椂鍒涘缓 GPG 瀵嗛挜锛夈€傝緭鍏ュ彛浠ゅ苟鎸変笅 Enter銆傜紪璇戞簮浠g爜闇€瑕佸嚑鍒嗛挓鏃堕棿銆?/li>

    鍦?Windows 涓婄紪璇?Roo 婧愪唬鐮佺殑杩囩▼

    涓?Ubuntu 鐩告瘮锛屽湪 Windows 涓婄紪璇戞簮浠g爜鏈夌偣鍥伴毦銆傝閬靛惊浠ヤ笅姝ラ锛?/p>

    1. 瀹夎 Git锛屼竴涓垎甯冨紡婧愪唬鐮佹帶鍒剁鐞嗙郴缁熴€傝寮€濮嬫杩囩▼锛屾偍闇€瑕佸湪鎮ㄧ殑 windows 鏈哄櫒涓婂畨瑁?Git銆傛垜鍦ㄦ垜鐨?windows 鏈哄櫒涓婂畨瑁呬簡 msysGit 銆傚鏋滄偍宸茬粡瀹夎浜?Git锛岄偅涔堝彲浠ヨ烦杩囪繖涓€姝ャ€傚湪瀹夎 msysGit 鏃讹紝瀹冧細瑕佹眰閫夋嫨瀹夎浣嶇疆銆傚畠浼氭墦寮€涓€涓懡浠ゆ彁绀虹锛屽苟寮€濮嬭Е鍙戝ぇ閲忓懡浠ゃ€傝繖灏嗘寔缁ぇ绾?1 鍒嗛挓銆傚畨瑁呭畬鎴愪箣鍚庯紝鎮ㄥ皢鐪嬪埌濡傛竻鍗?4 鎵€绀虹殑涓€涓睆骞曘€?
      娓呭崟 4. 瀹夎 msysGit
              { test "$bindir/" = "$execdir/" || \
                     { rm -f "$execdir/git.exe" && \
                     test -z "" &amp;&amp; \
                     ln "$bindir/git.exe" "$execdir/git.exe" 2>/dev/null || \
                     cp "$bindir/git.exe" "$execdir/git.exe"; } ; } && \
              { for p in git-add.exe git-annotate.exe git-apply.exe git-archive.exe 
      git-bisect--helper.exe git-blame.exe git-branch.exe git-bundle.exe git-cat-file.exe 
      git-check-attr.exe git-check-ref
                      rm -f "$execdirf$p" && \
                      ln "Sexecdir/git.exe" "Sexecdir/$p" 2>/dev/null ll \
                      ln -s "git.exe" "$execdir/$p" 2>/dev/null || \
                      cp "Sexecdir/git.exe" "$execdir/$p" Il exit; \
               done; } && \
              { test x"git-renote-https.exe git-renote-ftp.exe \
      git-renote-ftps.exe" = x ll \
                      { for p in git-remote-https.exe git-remote-ftp.exe \
      git-remote-ftps.exe; do \
                      rm -f "$execdir{$p" && \
                      ln "Sexecdir/git-remote-http.exe" "$execdir/$p" 2>/dev/null ll \
                      ln -s 鈥済it-renote鈥攈ttp.exe" "$execdir/$p" 2>/dev/null || \
                      cp "Sexecdir/git-remote-http.exe" "Sexecdir/$p" ll exit; \
                done; } ; } && \
              ./check_bindir "z$bindir" "z$execdir" "Sbindir/git鈥攁dd.exe"
      
      -------------------------
      Hello, dear Git developer.
      
      This is a minimal MSYS environment to work on Git.
      
      You are in the git working tree, and all is ready for you to hack.
      
      Welcome to msysGit
      
      Run 'git help git' to display the help index.
      Run 'git help <command>' to display help for specific commands.
      Run '/share/msysGit/add-shortcut.tcl' to add a shortcut to msysGit.
      
      It appears that you installed msysGit using the full installer.
      To set up the Git repositories, please run /share/msysGit/initialize.sh
    2. 璁剧疆 Git 鐜鍙橀噺銆傞渶瑕佸湪鎮ㄧ殑 Windows 璺緞涓缃?Git銆傚皢 ${MSYSGIT}\msysgit\bin 鍜?{MSYSGIT}\msysgit\mingw\bin 娣诲姞鍒版偍鐨?Windows 璺緞涓紝鍏朵腑 ${MSYSGIT} 鏄畨瑁?msysGit 鐨勪綅缃€傛墦寮€涓€涓柊鐨勫懡浠ゆ彁绀虹骞惰緭鍏?git銆傛偍灏嗙湅鍒板鍥?7 鎵€绀虹殑杈撳嚭銆?
      娓呭崟 5. Git 鍛戒护鎻愮ず绗?/h5>
      C:\>git
      usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
                 [-pl--paginate|I--no-pager] [--no-replace-objects]
                 [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
                 [-c name=value
                 [--help] COMMAND [ARGS]
      The most commonly used git commands are:
         add        Add file contents to the index
         bisect     Find by binary search the change that introduced a bug
         branch     List, create, or delete branches
         checkout   Checkout a branch or paths to the working tree
         clone      Clone a repository into a new directory
         commit     Record changes to the repository
         diff       Show changes between commits, commit and working tree, etc
         fetch      Download objects and refs from another repository
         grep       Print lines matching a pattern
         init       Create an empty git repository or reinitialize an existing
         log        Show commit logs
         merge      Join two or more development histories together
         mv         Move or rename a file, a directory, or a symlink
         pull       Fetch from and merge with another repository or a local bra
         push       Update remote refs along with associated objects
         rebase     Forward-port local commits to the updated upstream head
         reset      Reset current HEAD to the specified state
         rm         Remove files from the working tree and from the index
         show       Show various types of objects
         status     Show the working tree status
         tag        Create, list, delete or verify a tag object signed with GPG
      
      See 鈥檊it help COMMAND鈥?for more information on a specific command.
      C:\>_
    3. 浣跨敤 Git 绛惧嚭 Spring Roo銆傚湪杩欎竴姝ヤ腑锛屾偍灏嗕娇鐢?Git 绛惧嚭鏈€鏂版簮浠g爜锛屼粠鑰屽垱寤?Spring Roo 鐨勬湰鍦板厠闅嗐€傛墦寮€涓€涓懡浠ゆ彁绀虹骞惰浆鑷虫偍甯屾湜绛惧嚭 Spring Roo 鐨勪綅缃€傝緭鍏? git clone git://git.springsource.org/roo/roo.git 銆備竴鐩寸瓑鍒板畠瀹屾垚涓烘銆傝繖灏嗗湪鎮ㄧ鍑?Spring Roo 鐨勪綅缃垱寤轰竴涓悕涓?roo 鐨勬柊鏂囦欢澶广€?/li>
    4. 涓嬭浇鍜屽畨瑁?GPG for Windows銆侴nuPG 鏄?GNU 鐢ㄤ簬纭繚瀹夊叏閫氫俊鍜屾暟鎹瓨鍌ㄧ殑宸ュ叿銆傚畠鍙敤浜庡姞瀵嗘暟鎹拰鍒涘缓鏁板瓧绛惧悕銆俁oo 浣跨敤 GPG 鏉ヨ嚜鍔ㄧ鍚嶇紪璇戣緭鍑恒€傚畨瑁呬簡 GPG 涔嬪悗锛屼娇鐢? gpg 鈥搇ist-secret-keys銆傛偍搴斿綋浼氱湅鍒扮被浼兼竻鍗?6 鐨勮緭鍑恒€?
      娓呭崟 6. gpg list 鍛戒护鐨勭粨鏋?/h5>
      C:\dev\roo-sourcecode\roo>gpg --1ist-secret-keys
      C:/Users/xebia/AppData/Roaming/gnupg\secring.gpg
      sec 2048R/2F96093B 2010-07-03
      uid                shekhar (spring-roo) <shekhargu1ati84@gmai1.com>
      ssb 2048R/B77E5C63 2010-07-03
      C:\dev\roo-sourcecode\roo>_
    5. 濡傛灉娌℃湁鐪嬪埌杈撳嚭锛岃繖琛ㄦ槑鎮ㄩ鍏堥渶瑕佸垱寤轰竴涓瘑閽ャ€備娇鐢?gpg 鈥揼en-key銆傚畠浼氬紩瀵兼偍閫愭鍒涘缓瀵嗛挜銆備娇鐢?gpg 鈥搇ist-secret-keys 楠岃瘉鎮ㄦ柊鍒涘缓鐨勫瘑閽ュ凡鐢熸垚銆?/li>
    6. 鍙戝竷鎮ㄧ殑瀵嗛挜鍒颁竴涓叕閽ユ湇鍔″櫒涓娿€傛敞鎰?鈥搇ist-secret-keys 涓婃樉绀虹殑 sec 瀵嗛挜 ID銆傚湪鎴戠殑渚嬪瓙涓紝璇?ID 鏄?2F96093B銆傞€氳繃 gpg 鈥搆eyserver hkp://pgp.mit.edu 鈥搒end-keys 2F96093B 灏嗘偍鐨勫叕閽ユ帹閫佸埌涓€涓瘑閽ユ湇鍔″櫒涓婏紙鍦ㄧ粨灏炬洿鏀瑰瘑閽?ID锛夈€?/li>
    7. 棣栧厛鏋勫缓鍖呰绋嬪簭椤圭洰銆備竴浜?Roo 妯″潡闇€瑕佸凡缁忎笉浠?OSGi 褰㈠紡瀛樺湪鐨?JAR銆傚嵆锛屽畠浠病鏈変竴涓?OSGi 鎰熺煡鐨勬竻鍗曘€俁oo 鏈変竴涓悕涓?wrapping 鐨勭壒娈婇」鐩紝鍙皢甯告€?JAR 杞寲鎴?OSGi JAR銆傛偍闇€瑕佸湪璇曞浘浣跨敤 Roo 涔嬪墠杩愯鍖呰绋嬪簭銆傛病鏈夊畨瑁呯▼搴忥紝鎮ㄥ皢鐪嬪埌閿欒锛岃 Maven 鏃犳硶鎵惧埌 org.springframework.roo.wrapping.some_module銆傝鍒涘缓 JAR 鏂囦欢鍖咃紝浠庢牴 Roo 绛惧嚭浣嶇疆杈撳叆锛?
      	cd wrapping
      	mvn clean install 
      	cd..
    8. 杩愯 mvn clean install 鍛戒护銆傦紙Maven V2 搴斿綋瀹夎鍦ㄤ簡鎮ㄧ殑绯荤粺涓娿€傚鏋滄病鏈夛紝绔嬪嵆瀹夎瀹冦€傦級姣忔缂栬瘧婧愪唬鐮佹椂锛孧aven 灏嗘彁绀烘偍杈撳叆鎮ㄧ殑瀵嗛挜鐨勫瘑鐮?鍙d护锛堟偍杈撳叆浜嗗彛浠ょ殑鍚屾椂鍒涘缓 GPG 瀵嗛挜锛夈€傝緭鍏ュ彛浠ゅ苟鎸変笅 Enter銆傜紪璇戞簮浠g爜闇€瑕佸嚑鍒嗛挓鏃堕棿銆?/li>
    9. 鍦ㄦ偍鐨勭郴缁熻缃腑寤虹珛鐜鍙橀噺 ROO-DEV锛岃鍙橀噺搴旀寚鍚?Roo 椤圭洰鍐呯殑寮曞鏂囦欢澶广€傛偍杩樺簲褰撴坊鍔犺鍙橀噺鍒?PATH 鐜鍙橀噺锛屽鍥?3 鎵€绀恒€?/li>
    鍥?3. 寤虹珛 ROO-DEV 鍙橀噺

    Spring Roo 绠€浠嬶紝绗?一 閮ㄥ垎: 浠庢簮浠g爜鏋勫缓(杞

    鎮ㄧ幇鍦ㄥ彲浠ヤ娇鐢ㄦ渶鏂板紑鍙戠殑 Roo 鐗堟湰浜嗐€傛墦寮€鍛戒护鎻愮ず绗︼紝鍒涘缓涓€涓悕涓?mkdir roo_dev_demo 鐨勬柊鏂囦欢澶癸紝骞惰Е鍙?roo-dev 鍛戒护銆傛偍灏嗙湅鍒版竻鍗?7 涓墍绀虹殑灞忓箷銆?/p>

    娓呭崟 7. ROO-DEV shell
    C:\Users\xebia\demo\conference>roo
        ____  ____  ____
       / __ \/ __ \/ __ \
      / /_/ / / / / / / /
     / _, _/ /_/ / /_/ /
    /_/ |_|\____/\____/       1.1.B.RELEASE [rev 793f2b0]
    Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
    roo>

    鎮ㄥ彲鑳藉笇鏈涙洿鏂?Spring Roo 婧愪唬鐮佹潵浣跨敤鏈€鏂扮増鏈殑 Spring Roo銆傛墦寮€鍛戒护鎻愮ず绗﹀苟杞嚦 Spring Roo 鐨勬簮浠g爜浣嶇疆銆傝Е鍙?git pull 鍛戒护锛岃鍛戒护浼氬皢鎵€鏈夎繙绋嬫洿鏀规媺鍏ュ埌鎮ㄧ殑鏈湴鍏嬮殕涓紝鐒跺悗鎵ц涓€涓?mvn clean install 鍛戒护鏉ョ紪璇戞洿鏂扮殑婧愪唬鐮併€?/p>

    缁撴潫璇?/h2>

    姝ゆ椂锛屾偍宸茬粡鏋勫缓浜嗕竴涓畝鍗曠殑 web 搴旂敤绋嬪簭锛屾湡闂寸敋鑷虫棤闇€鎵撳紑鎴戜滑鐨勭紪杈戝櫒鎴栧弬鑰冧换浣曟枃妗c€傚簲鐢ㄧ▼搴忓厑璁告偍瀵瑰疄浣撴墽琛?CRUD 鎿嶄綔銆傛垜甯屾湜鎮ㄧ湅鍒?Roo 涓?Java 寮€鍙戜汉鍛樺甫鏉ヤ簡閲嶅ぇ鐢熶骇鏁堢巼鏀剁泭銆傚畠浣跨敤澶ч儴鍒嗗紑鍙戜汉鍛樺凡缁忕啛鐭ョ殑鎴愮啛鍜岀ǔ瀹氱殑鎶€鏈€?/p>

    鍦ㄧ 2 閮ㄥ垎锛屾垜浠皢浣垮簲鐢ㄧ▼搴忔洿瀹夊叏銆佹坊鍔犲浗闄呭寲鏀寔銆佹坊鍔犳秷鎭紶閫掓敮鎸侊紙SMTP 鍜?JMS锛夛紝骞跺畾鍒跺簲鐢ㄧ▼搴忋€傛垜浠繕灏嗘帰绌?Roo 鐨勪竴涓暟鎹簱閫嗗悜宸ョ▼鐗规€э紝灏嗚搴旂敤绋嬪簭杞寲涓轰竴涓姛鑳藉叏闈㈢殑浼佷笟搴旂敤绋嬪簭銆?/p>