一,Spring 设计思想
OOP: 面向对象编程-》封装、继承、多态
BOP: 面向Bean编程-》一切从Bean开始
AOP: 面向切面编程-》解藕、专 人做专事
IOC: 控制反转,将new 对象的操作交给Spring统一管理-》转交控制权
DI/DL: 依赖注入/依赖查找-》自动赋值
DI和AOP都依赖 IoC
二,Spring5新特性及高频面试题
2.1, 升级JDK8,J2EE 7
2.2, 反应式编程
2.3 全面支持注解编程
2.4 支持函数式编程
2.5 全面支持Rest风格配置
2.6, 对HTTP2.0全面支持
2.7 Kotlin和Spring WebFlux
2.8 可以直接使用Lambda表达式来注册Bean
2.9 Spring Web MVC全面最新的Servlet API (去Servlet化)
2.10 Junit5直接执行并发测试
2.11 丢弃Hibernate3/4,只支持Hibernate5,对Portlet、Velocity、XMLBeans、JDO、Guava终止支持
2.12 Spring核心容器做了一些更新 @Nullable、Logback
三,Spring5注解编程基础组件(Spring Annotation API使用)
3.1 配置组件(Configure Components)
@Configuration: 把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean.
@ComponentScan: 在配置类上添加该注解,默认会扫描该类所在的包下所有的配置类,相当于之前的
@Scope: 用于指定作用域(用在类上)
prototype: 原型、多例
singleton: 单例
request: 主要用于web模块,同一次请求只创建一个实例
session: 主要用于web模块,同一次session只创建一个实例
@Lazy: 表示延迟初始化 默认非延迟加载,一般解决bean循环引用问题
@Conditional: Spring4开始提供,作用是按照一定的条件进行判断,满足条件给容器注册Bean.
@Import: 导入外部资源 外部资源可以不加任何注解修饰,通知该注解注入Bean
lifecycle 生命周期控制(对Bean生命周期的监控):
1, 配置@Bean的参数 initMethod = XXXMethod(),destroyMethod=XXXMethod()
2, 分别实现InitializingBean和DisposableBean接口 重写destroy()和afterPropertiesSet()进行销毁和初始化.
3, @PostConstruct 用于指定初始化方法(用在方法上);
@PreDestory: 用于指定销毁方法(用在方法上);
@DependsOn: 定义Bean初始化及销毁时的顺序.
4, 自定义一个类,实现BeanPostProcessor接口 重写postProcessBeforeInitialization和postProcessAfterInitialization接口.这里针对指定包下所有Bean进行统一处理
3.2 赋值组件(自动装配 )Injection Comp