seasun  
          在不斷模仿、思考、總結(jié)中一步一步進(jìn)步!
          公告
          •     我的blog中的部分資源是來自于網(wǎng)絡(luò)上,如果您認(rèn)為侵犯了您的權(quán)利,請(qǐng)及時(shí)聯(lián)系我我會(huì)盡快刪除!E-MAIL:shiwenfeng@aliyun.com和QQ:281340916,歡迎交流。

          日歷
          <2010年1月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          常用鏈接

          隨筆分類

          good blog author

          積分與排名

          • 積分 - 81738
          • 排名 - 700

          最新評(píng)論

          閱讀排行榜

           

          一、首先,模塊的組織更加的細(xì)致,從那么多的jar分包就看的出來:

           

          Spring的構(gòu)建系統(tǒng)以及依賴管理使用的是Apache Ivy,從源碼包看出,也使用了Maven。

          Maven確實(shí)是個(gè)好東西,好處不再多言,以后希望能進(jìn)一步用好它。

          二、新特性如下:

          Spring Expression Language (Spring表達(dá)式語言)

          IoC enhancements/Java based bean metadata (Ioc增強(qiáng)/基于Java的bean元數(shù)據(jù))

          General-purpose type conversion system and UI field formatting system (通用類型轉(zhuǎn)換系統(tǒng)和UI字段格式化系統(tǒng))

          Object to XML mapping functionality (OXM) moved from Spring Web Services project (對(duì)象到XML映射功能從Spring Web Services項(xiàng)目移出)

          Comprehensive REST support (廣泛的REST支持)

          @MVC additions (@MVC增強(qiáng))

          Declarative model validation (聲明式模型驗(yàn)證)

          Early support for Java EE 6 (提前對(duì)Java EE6提供支持)

          Embedded database support (嵌入式數(shù)據(jù)庫的支持)

          三、針對(duì)Java 5的核心API升級(jí)

          1、BeanFactory接口盡可能返回明確的bean實(shí)例,例如:

          T getBean(String name, Class requiredType)

          Map getBeansOfType(Class type)

          Spring3對(duì)泛型的支持,又進(jìn)了一步。個(gè)人建議泛型應(yīng)該多用,有百利而無一害!

          2、Spring的TaskExecutor接口現(xiàn)在繼承自java.util.concurrent.Executor:

          擴(kuò)展的子接口AsyncTaskExecutor支持標(biāo)準(zhǔn)的具有返回結(jié)果Futures的Callables。

          任務(wù)計(jì)劃,個(gè)人還是更喜歡Quartz。

          3、新的基于Java5的API和SPI轉(zhuǎn)換器

          無狀態(tài)的ConversionService 和 Converters

          取代標(biāo)準(zhǔn)的JDK PropertyEditors

          類型化的ApplicationListener,這是一個(gè)實(shí)現(xiàn)“觀察者設(shè)計(jì)模式”使用的事件監(jiān)聽器。

          基于事件的編程模式,好處多多,在項(xiàng)目中應(yīng)該考慮使用,基于事件、狀態(tài)遷移的設(shè)計(jì)思路,有助于理清軟件流程,和減少項(xiàng)目的耦合度。

          四、Spring表達(dá)式語言

          Spring表達(dá)式語言是一種從語法上和統(tǒng)一表達(dá)式語言(Unified EL)相類似的語言,但提供更多的重要功能。它可以在基于XML配置文件和基于注解的bean配置中使用,并作為基礎(chǔ)為跨Spring portfolio平臺(tái)使用表達(dá)式語言提供支持。

          接下來,是一個(gè)表達(dá)式語言如何用于配置一個(gè)數(shù)據(jù)庫安裝中的屬性的示例:

          <bean class="mycompany.RewardsTestDatabase">
              <property name="databaseName"
                  value="#{systemProperties.databaseName}"/>
              <property name="keyGenerator"
                  value="#{strategyBean.databaseKeyGenerator}"/>
          </bean>
          如果你更愿意使用注解來配置你的組件,那么這種功能同樣可用:

          @Repository public class RewardsTestDatabase {
                @Value("#{systemProperties.databaseName}")
                public void setDatabaseName(String dbName) { … }
               
                @Value("#{strategyBean.databaseKeyGenerator}")
                public voidsetKeyGenerator(KeyGenerator kg) { … }
          }

          又多一種表達(dá)式語言,造輪子的運(yùn)動(dòng)還在繼續(xù)中!

          五、基于Java的bean元數(shù)據(jù)

          JavaConfig項(xiàng)目中的一些核心特性已經(jīng)集成到了Spring中來,這意味著如下這些特性現(xiàn)在已經(jīng)可用了:

          @Configuration

          @Bean

          @DependsOn

          @Primary

          @Lazy

          @Import

          @Value

          又來一堆的注解,無語了,感覺還是配置文件方便!:(

          這兒有一個(gè)例子,關(guān)于一個(gè)Java類如何使用新的JavaConfig特性提供基礎(chǔ)的配置信息:

          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);
              }
          }為了讓這段代碼開始生效,我們需要添加如下組件掃描入口到最小化的應(yīng)用程序上下文配置文件中:

          <context:component-scan base-package="org.example.config"/>
          <util:properties id="jdbcProperties" location="classpath:org/example/config/jdbc.properties"/>

          六、在組件中定義bean的元數(shù)據(jù)

          感覺Spring提供了越來越多的注解、元數(shù)據(jù),復(fù)雜性已經(jīng)超出了當(dāng)初帶來的方便本身!

          七、通用類型轉(zhuǎn)換系統(tǒng)和UI字段格式化系統(tǒng)

          Spring3加入了一個(gè)通用的類型轉(zhuǎn)換系統(tǒng),目前它被SpEL用作類型轉(zhuǎn)換,并且可能被一個(gè)Spring容器使用,用于當(dāng)綁定bean的屬性值的時(shí)候進(jìn)行類型轉(zhuǎn)換。

          另外,還增加了一個(gè)UI字段格式化系統(tǒng),它提供了更簡(jiǎn)單的使用并且更強(qiáng)大的功能以替代UI環(huán)境下的JavaBean的PropertyEditors,例如在SpringMVC中。

          這個(gè)特性要好好研究下,通用類型轉(zhuǎn)換系統(tǒng)如果果如所言的話,帶來的好處還是很多的。

          八、數(shù)據(jù)層

          對(duì)象到XML的映射功能已經(jīng)從Spring Web Services項(xiàng)目移到了Spring框架核心中。它位于org.springframework.oxm包中。

          OXM?研究下!時(shí)間真不夠!

          九、Web層

          在Web層最激動(dòng)人心的新特性莫過于新增的對(duì)構(gòu)件REST風(fēng)格的web服務(wù)和web應(yīng)用的支持!另外,還新增加了一些任何web應(yīng)用都可以使用的新的注解。

          服務(wù)端對(duì)于REST風(fēng)格的支持,是通過擴(kuò)展既有的注解驅(qū)動(dòng)的MVC web框架實(shí)現(xiàn)的。

          客戶端的支持則是RestTemplate類提供的。

          無論服務(wù)端還是客戶端REST功能,都是使用HttpConverter來簡(jiǎn)化對(duì)HTTP請(qǐng)求和應(yīng)答過程中的對(duì)象到表現(xiàn)層的轉(zhuǎn)換過程。

          MarshallingHttpMessageConverter使用了上面提到的“對(duì)象到XML的映射機(jī)制”。

          十、@MVC增強(qiáng)

          新增了諸如@CookieValue 和 @RequestHeaders這樣的注解等。

          十一、聲明式模型驗(yàn)證

          支持JSR 303,使用Hibernate Validator作為實(shí)現(xiàn)。

          十二、提前對(duì)Java EE6提供支持

          提供了使用@Async注解對(duì)于異步方法調(diào)用的支持(或者EJB 3.1里的 @Asynchronous)

          另外,新增對(duì)JSR 303, JSF 2.0, JPA 2.0等的支持。

          十三、嵌入式數(shù)據(jù)庫的支持

          對(duì)于嵌入式的Java數(shù)據(jù)庫引擎提供了廣泛而方便的支持,諸如HSQL, H2, 以及Derby等。

          這是不是代表一種潮流呢?數(shù)據(jù)庫向越來越小型化發(fā)展,甚至小型化到嵌入式了,我認(rèn)為這在桌面級(jí)應(yīng)用上還是很有市場(chǎng)的。

           

          本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/abigfrog/archive/2009/10/30/4748685.aspx

          posted on 2010-01-25 17:26 shiwf 閱讀(4710) 評(píng)論(0)  編輯  收藏 所屬分類: 1.01 spring

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
           
          Copyright © shiwf Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 临漳县| 临邑县| 楚雄市| 沅江市| 屏山县| 聂荣县| 揭西县| 通渭县| 孟村| 商河县| 东乡县| 延长县| 涞源县| 东乌| 大同县| 武宁县| 莱芜市| 江城| 左贡县| 宜宾县| 舒城县| 舟山市| 紫云| 阳山县| 宁海县| 思南县| 常德市| 五大连池市| 碌曲县| 巫溪县| 牡丹江市| 浪卡子县| 全南县| 洞口县| 九寨沟县| 盖州市| 鄱阳县| 汉川市| 和田市| 罗城| 布尔津县|