<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 2.5 新特性概述 下面列出的是 Spring 3.0 的新特性,我們在后面章節的詳細講述中會覆蓋到這些特性。 * Spring 表達式語言 * IoC 增加/基于對 Java 的 bean 元數據的支持 * 通用的類型轉換和字段格式化系統 * 對象轉 XML 映射功能(OXM),這是從 Spring Web Service 項目中遷出的 * 全面的 REST 支持 * 增加@MVC * 聲明式的模型驗證 * 先期對 Java EE 6 的支持 * 嵌入式數據庫的支持 ### 2.5.1 為 Java 5 更新的核心 API BeanFactory 接口盡可能地返回該類型 bean 的實例: * `T getBean(Class<T> requiredType)` * `T getBean(String name, Class<T> requiredType)` * `Map<String, T> getBeansOfType(Class<T> type)` 現在,Spring 的 TaskExecutor 接口擴展了 java.util.concurrent.Executor * 擴展的 AsyncTaskExecutor 支持標準的可調用特性 新的基于 Java 5 的轉換 API 和 SPI: * 無狀態的 ConversionService 和轉換器 * 取代標準 JDK 的 PropertyEditors 泛型 `ApplicationListener<E>` ### 2.5.2 Spring 表達式語言 Spring 引入了一種表達式語言,這和統一的 EL 在語法上很相似,但是提供了很多新特 性。這種表達式語言可以用于定義基于 XML 和注解的 bean,也可以作為表達式語言的基礎, 支持貫穿整個 Spring 框架的組合。這些新功能的詳細內容可以在第 7 章 Spring 表達式語言(SpEL)中看到。 Spring 表達式語言被用來為 Spring 社區提供一個單一的,支持良好的表達式語言,可以 用于 Spring 系列的所有產品中。它的語言特性由 Spring 系列產品的所有項目的需求來共同 驅動,包括基于 Eclipse 的 SpringSource Tool Suite(SpringSource 組織開發的工具套件,譯者 注)代碼完成支持工具的需求。 下面是表達式語言如何被用于配置數據庫屬性設置的示例代碼: ``` <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 void setKeyGenerator(KeyGenerator kg) { … } } ``` ### 2.5.3 控制反轉(IoC)容器 #### 2.5.3.1 基于 Java 的 bean 元數據 從 [Java Config](http://www.springsource.org/javaconfig) 項目中引入的一些核心特性現在也被加入到 Spring Framework 中了。這就 是說下面的注解是直接被支持的。 * @Configuration * @Bean * @DependsOn * @Primary * @Lazy * @Import * @ImportResource * @Value 下面是一個 Java 類提供基本配置信息的示例,使用了新的 Java Config 特性: ``` 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() { // 裝配一個session factory AnnotationSessionFactoryBean asFactoryBean = new AnnotationSessionFactoryBean(); asFactoryBean.setDataSource(dataSource()); // 其它配置 return asFactoryBean.getObject(); } @Bean public DataSource dataSource() { return new DriverManagerDataSource(jdbcUrl, username, password); } } ``` 要讓它發揮作用,你需要在應用上下文的 XML 文件中添加如下的組件掃描項。 ``` <context:component-scan base-package="org.example.config"/> <util:properties id="jdbcProperties" location="classpath:org/example/config/jdbc.properties" /> ``` 或 者 你 可 以 直 接 使 用 AnnotationConfigApplicationContext 來 啟 動 被 @Configuration 注解的類: ``` public static void main(String[] args) { ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig. class); FooService fooService = ctx.getBean(FooService.class); fooService.doStuff(); } ``` 參考 4.12.2 節“使用 AnnotationConfigApplicationContext 實例化 Spring 容器”來參考關 于 AnnotationConfigApplicationContext 的全部內容。 #### 2.5.3.2 使用組件定義 bean 的元數據 @Bean 注解的方法也可以支持內部的 Spring 組件。它們貢獻工廠 bean 的定義到容器中。 參考 4.10.4 節“使用組件定義 bean 的元數據”來獲取更多信息。 ### 2.5.4 通用的類型轉換系統和字段格式化系統 通用的類型轉換系統(參考 6.5 節)已經引入了。系統現在被 SpEL 使用來進行類型轉 換,當綁定 bean 的屬性值時也會被 Spring 容器和數據綁定器使用。 此外,格式化(參考 6.6 節)SPI 也被引入了,來格式化字段值。這個 SPI 對 JavaBean 的 PropertyEditors 提供了簡單的,更強壯替代,在如 Spring MVC 的客戶端環境中來使用。 ### 2.5.5 數據層 現在,對象到 XML 映射功能(OXM)被從 Spring Web Service 項目中移到 Spring Framework 的核心中。這個功能可以在 org.springframework.oxm 包下找到。關于使用 OXM 模塊 的更多信息可以在第 15 章使用 O/X 映射器編組 XML 找到。 ### 2.5.6 Web 層 對于 Web 層來說,最令人興奮的新特性是對構建 RESTful Web Service 和 Web 應用程序 的支持。也有一些新的注解可以用于任意的 Web 應用程序。 #### 2.5.6.1 全面的 REST 支持 對構建 RESTful 應用程序服務器端的支持已經作為已有的注解驅動的 MVC web 框架而提 供了。客戶端的支持由 RestTemplate 類來提供,和其 它的模板類是相 似的,比如 JdbcTemplate 和 JmsTemplate。服務器和客戶端兩者的 REST 功能都使用 HttpConverter 來在對象和它們在 HTTP 請求和響應代表之間方便的轉換。 MarshallingHttpMessageConverter 使用之前提到的對象到 XML 映射功能。 可以參考 MVC(第 16 章)和 RestTemplate(20.9.1 節)部分獲取更多信息。 #### 2.5.6.2 @MVC 的增加 mvc 命名空間被引入來大大簡化 Spring MVC 的配置。 其它如 @CookieValue 和 @RequestHeader 的 注 解 也 被 加 入 了 。 參 考 使 用 @CookieVlue 注解映射 cookie 值(16.3.3.9 節)和使用@RequestHeader 注解映射請求頭部屬 性(16.3.3.10 節)來獲取更多信息。 ### 2.5.7 聲明式的模型驗證 一些驗證增強(6.7 節),包括 JSR303 支持,使用 Hibernate 校驗器作為默認提供者。 ### 2.5.8 先期對 Java EE 6 的支持 通過使用新的@Async 注解(或 EJB 3.1 的@Asynchronous 注解)我們提供異步方法調用。 JSR 303,JSF 2.0,JPA 2.0 等 ### 2.5.9 嵌入式數據庫的支持 現在也提供了對嵌入式 Java 數據庫引擎(13.8 節)的方便支持,包括 HSQL,H2 和 Derby。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看