Spring(十三): Spring 条件注解 @Conditional
Spring 提供了一个通用的基于条件来创建Bean
的注解@Conditional
注解。
通过实现Condition
接口,并重写其matches
方法来构造判断条件。
Spring 提供了一个通用的基于条件来创建Bean
的注解@Conditional
注解。
通过实现Condition
接口,并重写其matches
方法来构造判断条件。
Spring 抽象出了统一的缓存接口来支持不同的缓存技术,提供了易于使用的缓存注解来操作缓存数据。
在Spring Boot 项目中能使用注解则用注解,XML配置文件的方式是最后之选。
Spring 中的默认为所有申明为 Bean
的对象创建一个实例存放到IoC
容器进行管理的,这些Bean
对象对于多线程来说是共享的,所以严格来说 Spring Bean 是非线程安全的。Spring 本身就没有对 bean 的多线程安全问题做出任何保证与措施。
使用 Spring 框架,在定义 Bean 时,通常不指定其作用范围而使用默认的配置,可能会对 Spring Bean 的作用范围不甚了解。Spring 给 Bean 定义的作用范围提供了灵活的配置,开箱即用,Spring Framework 支持 六个作用范围,其中四个范围只有在使用支持 Web 的 ApplicationContext时才能使用,还提供了自定义作用范围。
查看了下 Spring 5.0.9 Release 版本关于 Spring Bean scopes章节内容,在此做个记录,至于是否和其它版本有区别暂未对比。
Spring Bean的生命周期由多个特定的生命队段组成,可以从两个层面来定义Bean的生命周期。第一层是Bean的作用范围;第二层是实例化Bean所经历的一系列阶段。
Spring 将 Bean 注册到的 IoC 容器方式主要有XML配置文件方式、JavaConfig方式、注解方式这三种。
Spring Bean在使用之前或使用之后需要做一些操作,Spring对Bean
的生命周期的操作提供了支持。
项目中,当需要用到Spring容器本身的功能资源时,Bean就需要知道容器的存在,才能调用 Spring 所提供的资源,而 Spring Aware就是提供这样的功能,原本也是给 Spring 框架内部使用的。
Spring Aware 的目的就是为了让 Bean 获取容器的服务。ApplicationContext
接口集成了MessageSource
接口,ApplicationEventPublisher
接口和ResourceLoader
接口,如果让 Bean 继承 ApplicationContextAware
可以获得 Spring 容器的所有服务,但原则上有用到什么接口,再实现该接口。
Spirng 应用启动时,会初始化 ApplicationContext 应用上下文(容器),就可以获取容器中的 Bean,还可以对容器执行一些其它的操作,例如设置环境变量等。
Spring 支持 AspectJ的注解式切面编程。AOP可以让一组类共享相同的行为。