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 的多线程安全问题做出任何保证与措施。
Servlet 3.0+ 异步方法实现服务端消息推送是通过使用定时任务,定时的让控制器从另外一个线程返回一个DeferedResult
并推送给客户端。而更新DeferedResult
是在使用@Scheduled
定时任务注解的方法里执行的。
Web 项目中,浏览器与服务器是通过请求和响应来实现功能功能交互的,当服务端出现新的信息需要让前端知道时,就需要用到服务器推送技术。
服务端推送技术有基于SSE
(Server Send Event 服务端发送事件)的服务器端推送,该方式需要浏览器支持,而目前主流浏览器最近版本基本都支持;基于Servlet 3.0+
的异步方法特性;WebSocket
双向通信技术。
通常会在 @Controller
注解作用的类的方法上使用@ExceptionHandler,@ModelAttribute,@InitBinder
来处理异常或初始化绑定,这三个注解对所用使用了 @RequestMapping
注解的控制器内的方法有效。
如果希望此类方法在全局范围内(跨控制器)应用,则可以在带有 @ControllerAdvice
或 @RestControllerAdvice
注解的类中声明它们这三个注解。
@ControllerAdvice
用于声明一个 控制器 建言,作用在类上,可以将控制器的全局配置统一放置在该注解作用的类里,结合在方法上使用 @ExceptionHandler
注解,就能实现全局的异常控制。
使用 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
的生命周期的操作提供了支持。