Spring注解历史

历史发展

我先来简单的聊聊Spring注解的发展史。
Spring1.x时代,那时候注解的概念刚刚兴起,仅支持如@ManagedResource和@Transactional等注解。那时XML配置方式是唯一选择。
到了2.x时代Spring的注解体系有了雏形,属于“过渡时代”,引入了 @Autowired 、 @Controller 这一系列骨架式的注解。不过尚未完全替换XML配置驱动。
Spring 3.x是里程碑式的时代,它引入了配置类@Configuration及@ComponentScan,使我们可以替换XML配置方式,全面拥抱Spring注解,在3.1抽象了一套全新的配置属性API,包括Environment和PropertySources这两个核心API。
Spring4.X是完善时代,趋于完善,引入了@Conditional(条件化注解),@Repeatable等。
当下是5.X时代,是SpringBoot2.0的底层核心框架,变化不大,引入了一个@Indexed注解,以提升应用启动性能的。
好了,以上是Spring注解的发展史,接下来针对场景做些归类。

Spring核心注解按场景分类

1.模式注解

Spring注解 场景说明 起始版本
@Repository 数据仓储模式注解 2.0
@Component 通用组件模式注解 2.5
@Service 服务模式注解 2.5
@Controller Web 控制器模式注解 2.5
@Configuration 配置类模式注解 3.0

2.装配注解

Spring注解 场景说明 起始版本
@ImportResource 替代 XML 元素 2.5
@Import 限定@Autowired 依赖注入范围 2.5
@componentScan 扫描 指定 package 下标注spring 模式注解的类 3.1

3.依赖注入注解

Spring注解 场景说明 起始版本
@Autowired Bean 依赖注入,支持多种依赖查找方式 2.5
@Qualifier 细粒度的@Autowired 依赖查找 2.5
Java注解 场景说明 起始版本
@Resouece Bean 依赖注入,仅支持名称依赖查找方式 2.5

4.Bean 自定义注解

Spring注解 场景说明 起始版本
@Bean 替代 XML 元素<bean> 3.0
@DependsOn 替代 XML 属性<bean depends-on="..."/> 3.0
@Lazy 替代 XML 属性<bean lazy0init="true|falses"/> 3.0
@Primary 替代 XML 元素<bean primary="true|false"/> 3.0
@Role 替代 SML 元素<bean role="..."/> 3.1
@Lookup 替代 XML 属性<bean lookup-method="..."> 4.1

5.条件装配注解

Spring注解 场景说明 起始版本
@Profile 配置化条件装配 3.1
@Conditional 编程条件装配 3.1
  1. 配置属性注解
Spring注解 场景说明 起始版本
@PropertySource 配置属性抽象 PropertySource 3.1
@PropertySources @PropertySource集合注解 4.0
  1. 生命周期回调注解
Spring注解 场景说明 起始版本
@PostConstruct 替换 XML 元素<bean init-method="..."/>或 InitializingBean 2.5
@PreDestroy 替换 XML 元素<bean destroy-method="..." />或 DisposableBean 2.5
  1. 注解属性注解
Spring注解 场景说明 起始版本
@AliasFor 别名注解属,实现复用的目的 4.2
  1. 性能注解
Spring注解 场景说明 起始版本
@Indexed 提升 spring 模式注解的扫描效率 5.0

references

[1]小马哥.Spring Boot编程思想[M].中国:电子工业出版社,2019

results matching ""

    No results matching ""