Spring范围很广,暂且开一篇胡乱拼,后期增多了内容再细分。
1 渊源
1.1 spring
原型在200210由Rod Johnson发布的书中体现,后来在200403spring 1.0版本发布,201709spring 5.0发布,
spring ioc
控制反转,管理容器中的bean,主要使用di依赖注入实现。
spring Aop
面向切面,调用者和被调用者解藕,用于权限、缓存等功能实现。
spring transaction
事务管理,一通过配置文件,二基于注解
spring mvc
数据,业务,展示分离
spring security
提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以spring应用上下文中配置的bean,为应用提供声明式的安全访问控制功能。
spring schedule
基于spring能用统一的配置和编码风格来使用schedule方案,支持Jdk time、concurrent、quartz
1.2 spring boot
由于spring的边界不断的进行扩充,导致了基础配置越来越复杂,spring boot应运而生,201404 springboot 1.0.0发布,其核心思想,约定大于配置。
引入web模块
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>
开发环境调试
spring-boot-maven-plugin
json接口开发
@RestController
@RequestMapping(“/test”)
自定义filter
@Configuration
@Bean
自定义配置文件
@Component
@Value(“${asd.sdf}”)
1.3 spring cloud
基于spring boot开发,解决微服务架构中的服务治理而提供的开发框架。是一系列框架的有序集合,简化了分布式基础设施的开发,如发现注册,配置中心,消息总线,负载均衡,断路器,数据监控等。
2 Spring bean的作用域
<bean=“” class=“” scope=“”/>
2.1 singleton单例 缺省作用域
容器中只会存在一个共享的bean实例,无论多少个bean引用他,始终指向一个对象。
2.2 prototype原型
每次通过spring容器获取的原型定义的bean时,容器都会创建一个新的bean实例。
2.3 request
不同的http request产生不同的bean,该bean只在当前request有效。
2.4 session
不同的http session产生不同的bean,该bean仅在当前session有效。
2.5 global session
在一个全局的http session中,容器会返回该bean的同一个实例,仅在portlet context时有效
3 Spring bean的生命周期
Spring容器可以管理singleton作用域下的bean生命周期
而对于prototype作用域的bean,只负责创建,而不再跟踪其生命周期
4 spring bean实例化顺序
实例化bean对象
设置bean属性
检验aware相关接口并设置相关依赖
Beanpostprocessor前置处理
检查是否是initbean决定是否调用afterpropertiesset
检查是否配置有init-method
Beanpostprocessor后置处理
注册destruction相关回调接口
使用中
检查是否有disposablebean接口
检查是否有destroy方法