锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
Spring鐨勬瀯寤虹郴緇熶互鍙婁緷璧栫鐞嗕嬌鐢ㄧ殑鏄疉pache Ivy錛屼粠婧愮爜鍖呯湅鍑猴紝涔熶嬌鐢ㄤ簡Maven銆?/font>
Maven紜疄鏄釜濂戒笢瑗匡紝濂藉涓嶅啀澶氳█錛屼互鍚庡笇鏈涜兘榪涗竴姝ョ敤濂藉畠銆?/font>
浜屻佹柊鐗規у涓嬶細
Spring Expression Language 錛圫pring琛ㄨ揪寮忚璦錛?/font>
IoC enhancements/Java based bean metadata 錛圛oc澧炲己/鍩轟簬Java鐨刡ean鍏冩暟鎹級
General-purpose type conversion system and UI field formatting system 錛堥氱敤綾誨瀷杞崲緋葷粺鍜孶I瀛楁鏍煎紡鍖栫郴緇燂級
Object to XML mapping functionality (OXM) moved from Spring Web Services project 錛堝璞″埌XML鏄犲皠鍔熻兘浠嶴pring Web Services欏圭洰縐誨嚭錛?/font>
Comprehensive REST support 錛堝箍娉涚殑REST鏀寔錛?/font>
@MVC additions 錛園MVC澧炲己錛?/font>
Declarative model validation 錛堝0鏄庡紡妯″瀷楠岃瘉錛?/font>
Early support for Java EE 6 錛堟彁鍓嶅Java EE6鎻愪緵鏀寔錛?/font>
Embedded database support 錛堝祵鍏ュ紡鏁版嵁搴撶殑鏀寔錛?/font>
涓夈侀拡瀵笿ava 5鐨勬牳蹇傾PI鍗囩駭
1銆丅eanFactory鎺ュ彛灝藉彲鑳借繑鍥炴槑紜殑bean瀹炰緥錛屼緥濡傦細
T getBean(String name, Class requiredType)
Map getBeansOfType(Class type)
Spring3瀵規硾鍨嬬殑鏀寔錛屽張榪涗簡涓姝ャ備釜浜哄緩璁硾鍨嬪簲璇ュ鐢紝鏈夌櫨鍒╄屾棤涓瀹籌紒
2銆丼pring鐨凾askExecutor鎺ュ彛鐜板湪緇ф壙鑷猨ava.util.concurrent.Executor錛?/font>
鎵╁睍鐨勫瓙鎺ュ彛AsyncTaskExecutor鏀寔鏍囧噯鐨勫叿鏈夎繑鍥炵粨鏋淔utures鐨凜allables銆?/font>
浠誨姟璁″垝錛屼釜浜鴻繕鏄洿鍠滄Quartz銆?/font>
3銆佹柊鐨勫熀浜嶫ava5鐨凙PI鍜孲PI杞崲鍣?/font>
鏃犵姸鎬佺殑ConversionService 鍜?Converters
鍙栦唬鏍囧噯鐨凧DK PropertyEditors
綾誨瀷鍖栫殑ApplicationListener錛岃繖鏄竴涓疄鐜?#8220;瑙傚療鑰呰璁℃ā寮?#8221;浣跨敤鐨勪簨浠剁洃鍚櫒銆?/font>
鍩轟簬浜嬩歡鐨勭紪紼嬫ā寮忥紝濂藉澶氬錛屽湪欏圭洰涓簲璇ヨ冭檻浣跨敤錛屽熀浜庝簨浠躲佺姸鎬佽縼縐葷殑璁捐鎬濊礬錛屾湁鍔╀簬鐞嗘竻杞歡嫻佺▼錛屽拰鍑忓皯欏圭洰鐨勮﹀悎搴︺?/font>
鍥涖丼pring琛ㄨ揪寮忚璦
Spring琛ㄨ揪寮忚璦鏄竴縐嶄粠璇硶涓婂拰緇熶竴琛ㄨ揪寮忚璦錛圲nified EL錛夌浉綾諱技鐨勮璦錛屼絾鎻愪緵鏇村鐨勯噸瑕佸姛鑳姐傚畠鍙互鍦ㄥ熀浜嶺ML閰嶇疆鏂囦歡鍜屽熀浜庢敞瑙g殑bean閰嶇疆涓嬌鐢紝騫朵綔涓哄熀紜涓鴻法Spring portfolio騫沖彴浣跨敤琛ㄨ揪寮忚璦鎻愪緵鏀寔銆?/font>
鎺ヤ笅鏉ワ紝鏄竴涓〃杈懼紡璇█濡備綍鐢ㄤ簬閰嶇疆涓涓暟鎹簱瀹夎涓殑灞炴х殑紺轟緥錛?/font>
<bean class="mycompany.RewardsTestDatabase">
<property name="databaseName"
value="#{systemProperties.databaseName}"/>
<property name="keyGenerator"
value="#{strategyBean.databaseKeyGenerator}"/>
</bean>
濡傛灉浣犳洿鎰挎剰浣跨敤娉ㄨВ鏉ラ厤緗綘鐨勭粍浠訛紝閭d箞榪欑鍔熻兘鍚屾牱鍙敤錛?/font>
@Repository public class RewardsTestDatabase {
@Value("#{systemProperties.databaseName}")
public void setDatabaseName(String dbName) { … }
@Value("#{strategyBean.databaseKeyGenerator}")
public voidsetKeyGenerator(KeyGenerator kg) { … }
}
鍙堝涓縐嶈〃杈懼紡璇█錛岄犺疆瀛愮殑榪愬姩榪樺湪緇х畫涓紒
浜斻佸熀浜嶫ava鐨刡ean鍏冩暟鎹?/font>
JavaConfig欏圭洰涓殑涓浜涙牳蹇冪壒鎬у凡緇忛泦鎴愬埌浜哠pring涓潵錛岃繖鎰忓懗鐫濡備笅榪欎簺鐗規х幇鍦ㄥ凡緇忓彲鐢ㄤ簡錛?/font>
@Configuration
@Bean
@DependsOn
@Primary
@Lazy
@Import
@Value
鍙堟潵涓鍫嗙殑娉ㄨВ錛屾棤璇簡錛屾劅瑙夎繕鏄厤緗枃浠舵柟渚匡紒錛氾紙
榪欏効鏈変竴涓緥瀛愶紝鍏充簬涓涓狫ava綾誨浣曚嬌鐢ㄦ柊鐨凧avaConfig鐗規ф彁渚涘熀紜鐨勯厤緗俊鎭細
package org.example.config;
@Configuration
public class AppConfig {
private @Value("#{jdbcProperties.url}") String jdbcUrl;
private @Value("#{jdbcProperties.username}") String username;
private @Value("#{jdbcProperties.password}") String password;
@Bean
public FooService fooService() {
return new FooServiceImpl(fooRepository());
}
@Bean
public FooRepository fooRepository() {
return new HibernateFooRepository(sessionFactory());
}
@Bean
public SessionFactory sessionFactory() {
// wire up a session factory
AnnotationSessionFactoryBean asFactoryBean =
new AnnotationSessionFactoryBean();
asFactoryBean.setDataSource(dataSource());
// additional config
return asFactoryBean.getObject();
}
@Bean
public DataSource dataSource() {
return new DriverManagerDataSource(jdbcUrl, username, password);
}
}涓轟簡璁╄繖孌典唬鐮佸紑濮嬬敓鏁堬紝鎴戜滑闇瑕佹坊鍔犲涓嬬粍浠舵壂鎻忓叆鍙e埌鏈灝忓寲鐨勫簲鐢ㄧ▼搴忎笂涓嬫枃閰嶇疆鏂囦歡涓細
<context:component-scan base-package="org.example.config"/>
<util:properties id="jdbcProperties" location="classpath:org/example/config/jdbc.properties"/>
鍏佸湪緇勪歡涓畾涔塨ean鐨勫厓鏁版嵁
鎰熻Spring鎻愪緵浜嗚秺鏉ヨ秺澶氱殑娉ㄨВ銆佸厓鏁版嵁錛屽鏉傛у凡緇忚秴鍑轟簡褰撳垵甯︽潵鐨勬柟渚挎湰韜紒
涓冦侀氱敤綾誨瀷杞崲緋葷粺鍜孶I瀛楁鏍煎紡鍖栫郴緇?/font>
Spring3鍔犲叆浜嗕竴涓氱敤鐨勭被鍨嬭漿鎹㈢郴緇燂紝鐩墠瀹冭SpEL鐢ㄤ綔綾誨瀷杞崲錛屽茍涓斿彲鑳借涓涓猄pring瀹瑰櫒浣跨敤錛岀敤浜庡綋緇戝畾bean鐨勫睘鎬у肩殑鏃跺欒繘琛岀被鍨嬭漿鎹€?/font>
鍙﹀錛岃繕澧炲姞浜嗕竴涓猆I瀛楁鏍煎紡鍖栫郴緇燂紝瀹冩彁渚涗簡鏇寸畝鍗曠殑浣跨敤騫朵笖鏇村己澶х殑鍔熻兘浠ユ浛浠I鐜涓嬬殑JavaBean鐨凱ropertyEditors錛屼緥濡傚湪SpringMVC涓?/font>
榪欎釜鐗規ц濂藉ソ鐮旂┒涓嬶紝閫氱敤綾誨瀷杞崲緋葷粺濡傛灉鏋滃鎵璦鐨勮瘽錛屽甫鏉ョ殑濂藉榪樻槸寰堝鐨勩?/font>
鍏佹暟鎹眰
瀵硅薄鍒癤ML鐨勬槧灝勫姛鑳藉凡緇忎粠Spring Web Services欏圭洰縐誨埌浜哠pring妗嗘灦鏍稿績涓傚畠浣嶄簬org.springframework.oxm鍖呬腑銆?/font>
OXM?鐮旂┒涓嬶紒鏃墮棿鐪熶笉澶燂紒
涔濄乄eb灞?/font>
鍦╓eb灞傛渶嬋鍔ㄤ漢蹇冪殑鏂扮壒鎬ц帿榪囦簬鏂板鐨勫鏋勪歡REST椋庢牸鐨剋eb鏈嶅姟鍜寃eb搴旂敤鐨勬敮鎸侊紒鍙﹀錛岃繕鏂板鍔犱簡涓浜涗換浣晈eb搴旂敤閮藉彲浠ヤ嬌鐢ㄧ殑鏂扮殑娉ㄨВ銆?/font>
鏈嶅姟绔浜嶳EST椋庢牸鐨勬敮鎸侊紝鏄氳繃鎵╁睍鏃㈡湁鐨勬敞瑙i┍鍔ㄧ殑MVC web妗嗘灦瀹炵幇鐨勩?/font>
瀹㈡埛绔殑鏀寔鍒欐槸RestTemplate綾繪彁渚涚殑銆?/font>
鏃犺鏈嶅姟绔繕鏄鎴風REST鍔熻兘錛岄兘鏄嬌鐢℉ttpConverter鏉ョ畝鍖栧HTTP璇鋒眰鍜屽簲絳旇繃紼嬩腑鐨勫璞″埌琛ㄧ幇灞傜殑杞崲榪囩▼銆?/font>
MarshallingHttpMessageConverter浣跨敤浜嗕笂闈㈡彁鍒扮殑“瀵硅薄鍒癤ML鐨勬槧灝勬満鍒?#8221;銆?/font>
鍗併丂MVC澧炲己
鏂板浜嗚濡侤CookieValue 鍜?@RequestHeaders榪欐牱鐨勬敞瑙g瓑銆?/font>
鍗佷竴銆佸0鏄庡紡妯″瀷楠岃瘉
鏀寔JSR 303錛屼嬌鐢℉ibernate Validator浣滀負瀹炵幇銆?/font>
鍗佷簩銆佹彁鍓嶅Java EE6鎻愪緵鏀寔
鎻愪緵浜嗕嬌鐢ˊAsync娉ㄨВ瀵逛簬寮傛鏂規硶璋冪敤鐨勬敮鎸侊紙鎴栬匛JB 3.1閲岀殑 @Asynchronous錛?/font>
鍙﹀錛屾柊澧炲JSR 303, JSF 2.0, JPA 2.0絳夌殑鏀寔銆?/font>
鍗佷笁銆佸祵鍏ュ紡鏁版嵁搴撶殑鏀寔
瀵逛簬宓屽叆寮忕殑Java鏁版嵁搴撳紩鎿庢彁渚涗簡騫挎硾鑰屾柟渚跨殑鏀寔錛岃濡侶SQL, H2, 浠ュ強Derby絳夈?/font>
榪欐槸涓嶆槸浠h〃涓縐嶆疆嫻佸憿錛熸暟鎹簱鍚戣秺鏉ヨ秺灝忓瀷鍖栧彂灞曪紝鐢氳嚦灝忓瀷鍖栧埌宓屽叆寮忎簡錛屾垜璁や負榪欏湪妗岄潰綰у簲鐢ㄤ笂榪樻槸寰堟湁甯傚満鐨勩?/font>
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/abigfrog/archive/2009/10/30/4748685.aspx