Spring走向注解驱动编程

SpringFramework的两大核心,IOC(Inversion of control)控制反转和DI(Dependency Inject)依赖注入,其推崇的理念是应用系统不应以java代码的方式直接控制依赖关系,而是通过容器来管理。

Spring Framework 1.x 注解驱动启蒙时代

从Spring Framework 1.2.0版本开始,开始支持Annotation,虽然框架层面均已支持@managedResource和@Transactional等,但是其主要的还是以XML配置为准。

Spring Framework 2.X 注解驱动过渡时代

Spring Framework 2.0在Annotation支持方面添加了新的成员,@Required、数据相关的@Repository及AOP相关的@Aspect等,但同时提升了XML配置能力,即“可扩展的XML编写(Extensible XML authoring)”,当然的,这种扩展能力的出现,无形中为XML的配置增加了筹码。

Spring Framework2.5开始,引入了新的骨架式Annotation。

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

Spring Framework 2.5还支持了JSR-250(Java规范)。

@Resource注入

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

@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模式注解添加索引。

原文地址:https://www.cnblogs.com/yanyouqiang/p/10981365.html

时间: 2024-10-03 23:35:59

Spring走向注解驱动编程的相关文章

spring mvc 注解入门示例

web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/ja

spring mvc 注解示例

springmvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframewo

Spring 缓存注解解析过程

Spring 缓存注解解析过程 通过 SpringCacheAnnotationParser 的 parseCacheAnnotations 方法解析指定方法或类上的缓存注解, @Cacheable 注解将被解析为 CacheableOperation 操作, @CachePut 注解将被解析为 CachePutOperation 操作, @CacheEvict 注解将被解析为 CacheEvictOperation 操作. 缓存注解 /** * 启用Spring以注解驱动的缓存管理功能 */

spring boot01,spring完全注解(零配置)编程方式

前言: spring boot就是整合了很多优秀的框架,不用我们自己手动的去写一堆xml配置然后进行配置.有了它, 你可以更加敏捷地开发Spring应用程序,专注于应用程序的功能,不用在Spring的配置上多花功 夫,甚至完全不用配置. 一  spring4.x的java注解方式编程 Java注解是Spring4.x推荐的配置方式,可以完全替代xml配置.Spring的Java注解方式是通过 @Configuration和 @Bean这两个注解实现的: 1.@Configuration 作用于类

使用 Spring 2.5 基于注解驱动的 Spring MVC

使用 Spring 2.5 基于注解驱动的 Spring MVC 原文链接:http://www.ibm.com/developerworks/cn/java/j-lo-spring25-mvc/ 基于注解的配置有越来越流行的趋势,Spring 2.5 顺应这种趋势,为 Spring MVC 提供了完全基于注解的配置.本文将介绍 Spring 2.5 新增的 Sping MVC 注解功能,讲述如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置. 概述 继 Spring 2.0

SSH框架搭建 笔记 (含spring注解驱动)

分类: web 开发2014-04-27 12:33 354人阅读 评论(0) 收藏 举报 框架springinterface注解 好久没有搭建框架了,今天整理下以前的知识,整合下SSH,没想到手生了,一时半会各种异常出来,经过一番挣扎后,终于搞出来了雏形, 下面是我做整合框架的笔记,如果大家开发过程中又遇到的情况,可以参考下 首先是包的结构,(命名不算正规哈~,临时写的仓促了点) 框架是基于JAR包的基础上构建的,所以必须必备的jar包必须先下好, 如图: 没有的可以在本文源代码里下: 搭建框

使用 Spring 2.5 基于注解驱动的 Spring MVC--转

概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 XML 配置文件中定义请求和 Controller 的映射关系,仅仅使用注解就可以让一个 POJO 具有 Controller 的绝大部分功能 —— Spring MVC 框架的易用性得到了进一步的增强.在框架灵活性.易用性和扩展性上,Spring MVC 已经全面超越了其它的 MVC 框架,伴随

Spring注解驱动开发之IOC

1.最简单的注解驱动开发实例: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.8.RELEASE</version> </dependency> public class Student { String name; public String ge

Spring 注解驱动(一)基本使用规则

Spring 注解驱动(一)基本使用规则 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 一.基本使用 @Configuration @ComponentScan(basePackages = "com.github.binarylei", excludeFilters = {@Filter(type = FilterType.ANNOTATION, classes = {Controller.class})