Spring走向註解驅動編程

SpringFramework的兩大核心,IOC(Inversion of control)控制反轉和DI(Dependency Inject)依賴注入,其推崇的理念是應用系統不該以java代碼的方式直接控制依賴關係,而是經過容器來管理。java

Spring Framework 1.x 註解驅動啓蒙時代

從Spring Framework 1.2.0版本開始,開始支持Annotation,雖然框架層面均已支持@managedResource和@Transactional等,可是其主要的仍是以XML配置爲準。web

Spring Framework 2.X 註解驅動過渡時代

Spring Framework 2.0在Annotation支持方面添加了新的成員,@Required、數據相關的@Repository及AOP相關的@Aspect等,但同時提高了XML配置能力,即「可擴展的XML編寫(Extensible XML authoring)」,固然的,這種擴展能力的出現,無形中爲XML的配置增長了籌碼。編程

Spring Framework 2.5開始,引入了新的骨架式Annotation。跨域

  • @Service
  • @Controller,@RequestMapping及@ModelAttribute

Spring Framework 2.5還支持了JSR-250(Java規範)。瀏覽器

@Resource注入緩存

@PostConstruct 替代<bean init-method=」…」/>app

@PreDestroy 替代<bean destroy-method=」…」/>框架

儘管Spring Framework 2.X時代提供了爲數很多的註解,然而編程的手段卻很少,最主要的緣由在於框架層面仍未「直接」提供驅動註解的Spring應用上下文,而且仍須要XML驅動,<context:annotation-config>和<context:component-scan>異步

Spring Framework 3.x 註解驅動黃金時代

Spring Framework3.x是一個里程碑式的時代,3.0除了提高Spring模式註解「派生」的層次性,首要任務是替換XML配置方式,引入配置類註解@Configuration,該註解是內建的@Component的「派生」註解,遺憾的是,3.0並無引入<context:component-scan>的註解,而是選擇過渡方案——@ImportResource和@Import。ImportResource負責導入遺留的XML配置文件,Import容許導入一個或多個類做爲Spring Bean。性能

3.0引入AnnotationConfigApplicationContext最爲前時代ApplicationContext的替代者。3.1新引入註解@ComponentScan,替換XML的<context:component-scan>,成爲全面進入註解驅動時代的一大步。

SpringFramework3.x註解提高還體如今如下方面:

  • 定義聲明中,@Bean容許使用註解@Role設置其角色
  • 使得Spring應用上下文具有條件化Bean定義的能力
  • 方面,@RequestHeader,@CookieVale和@RequestPart出現,使得沒必要使用Servlet API
  • 以及配置屬性源抽象PropertySources,奠基了SpringBoot外部化配置的基礎。
  • 配套的註解Caching和Cacheable極大簡化數據緩存的開發。
  • 週期異步@Schedule及異步web請求DeferredResult

Spring Framework 4.x 註解驅動完善時代

3.1開始提供@Profile提供了配置化的條件組裝,不過這方面仍是比較單一的,4.0開始,引入條件化註解@Conditional,經過自定義Condition實現配合,彌補以前版本條件化裝配的短板,4.0開始Profile反過來經過@conditional實現。

Java8開始對提供@Repeatable,Framework4.0巧妙的兼容了JSR-310。根據特性,將@PropertySource、@ComponentScan提高爲可重複使用的註解@PropertySources、@ComponentScans。

4.2開始

  • 新增了事件監聽器註解@EventListener,做爲ApplicationListener接口編程的第二選擇。
  • @AliasFor解除註解派生的時候衝突限制
  • 在瀏覽器跨域資源訪問方面,引入@CrossOrigin,做爲CorsRegistry替換註解方案。

SpringFramework 5.x 註解驅動當下時代

SpringFramework5.0做爲Spring Boot 2.0的底層,註解驅動的性能提高不是那麼明顯。在SpringBoot應用場景中,大量使用@ComponentScan掃描,致使Spring模式的註解解析時間耗時越長,面對這個問題,5.0引入@Indexed,爲Spring模式註解添加索引。

相關文章
相關標籤/搜索