Spring4.0實用教程-4.x初體驗
一、環境準備
1、配置Spring Maven倉庫。
發布版:
<repositories> <repository> <id>io.spring.repo.maven.release</id> <url>http://repo.spring.io/release/</url> <snapshots><enabled>false</enabled></snapshots> </repository> </repositories>
<repositories> <repository> <id>io.spring.repo.maven.milestone</id> <url>http://repo.spring.io/milestone/</url> <snapshots><enabled>false</enabled></snapshots> </repository> </repositories>
<repositories> <repository> <id>io.spring.repo.maven.snapshot</id> <url>http://repo.spring.io/snapshot/</url> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories>
2、日志系統的切換。
默認情況下Spring框架采用Jakarta Commons Logging API(JCL)作為日志系統,相應的jar包為commons-logging.jar。commons-logging在運行時會自動尋找系統類路徑下已注冊的日志框架,并使用它認為正確的一個來處理日志輸出。如果沒有可使用的,則會使用JDK的java.util.logging。為了避免 Spring框架對日志系統的依賴,只有spring-core明確地依賴commongs-logging,其他模塊只在編譯時依賴。如果想將 Spring框架的日志系統切換為其他的,比如SLF4J(編譯時綁定),則可以將對commons-logging的依賴去掉,因為只有spring- core顯式依賴它,然后再引入其他的日志系統。
使用SLF4J:
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.0.2.RELEASE</version> <!--排除commons-logging依賴--> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <!--添加SLF4J-JCL依賴,將對JCL的日志API調用轉換為對SLF4J接口的調用--> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.5.8</version> </dependency> <!--添加SLF4J接口依賴--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.5.8</version> </dependency> <!--添加SLF4J-Log4j依賴,用于將對SLF4J接口的調用轉接到具體的日志系統log4j--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.5.8</version> </dependency> <!--添加log4j依賴,真正實現日志輸出--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> </dependency> </dependencies>
使用Log4J(JCL會在運行時發現該框架并使用它作為日志輸出):
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.0.2.RELEASE</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> </dependency> </dependencies>
1、提供更豐富的入門經驗。原來的Spring框架網站升級為spring.io,提供了豐富的文檔和入門指導。
2、刪除過時的包和方法。具體API變動可以參考變動報告,第三方類庫至少使用2010/2011年發布的版本,尤其是Hibernate 3.6+, EhCache 2.1+, Quartz 1.8+, Groovy 1.8+, and Joda-Time 2.0+。Hibernate Validator要求使用4.3+,Jackson 2.0+。
3、Java 8支持。當然也支持Java6和Java7,但最好在使用Spring框架3.X或4.X時,將JDK升級到Java7,因為有些版本至少需要Java7。
4、Java EE 6和7。使用Spring4.x時Java EE版本至少要6或以上,且需要JPA 2.0和Servlet 3.0 的支持,所以服務器,web容器需要做相應的升級。一個更具前瞻性的注意是,Spring4.0支持J2EE 7的適用級規范,比如JMS 2.0, JTA 1.2, JPA 2.1, Bean Validation 1.1和JSR-236并發工具包,在選擇這些jar包時需要注意版本。
5、使用Groovy DSL定義外部Bean。
6、核心容器提升。
I、支持Bean的泛型注入,比如:
@Autowired Repository<Customer> customerRepository.//使用特定的實現注入Repository
II、使用元注解開發暴露指定內部屬性的自定義注解。
III、通過@Ordered注解或Ordered接口對注入集合或數組的Bean進行排序。
IV、@Lazy注解可以用在注入點或@Bean定義上。
V、為開發者引入@Description注解。
VI、引入@Conditional注解進行有條件的Bean過濾。
VII、基于CGLIB的代理類不需要提供默認構造器,因為Spring框架將CGLIB整合到內部了。
VIII、框架支持時區管理,比如LocalContext。
7、Web提升。
I、增加新的@RestController注解,這樣就不需要在每個@RequestMapping方法中添加@ResponseBody注解。
II、添加AsyncRestTemplate,在開發REST客戶端時允許非阻塞異步支持。
III、為Spring MVC應用程序開發提供全面的時區支持。
8、WebSocket,SockJS和STOMP消息。
9、測試提升。
I、spring-test模塊里的幾乎所有注解都能被用做元注解去創建自定義注解,來減少跨測試集時的重復配置。
II、活躍的bean定義配置文件可以編程方式解析。
III、spring-core模塊里引入一個新的SocketUtils類,用于掃描本地可使用的TCP和UDP服務端口。一般用于測試需要socket的情況,比如測試開啟內存SMTP服務,FTP服務,Servlet容器等。
IV、由于Spring4.0的原因,org.springframework.mock.web包現在基于Servlet 3.0 API。
注:SpringFramework4.0實用教程,通過實例講解Spring4.X的各種配置和特性。
</div>來自:http://blog.csdn.net/qbg19881206/article/details/19705681