spring学习小记录
文章目录
- spring学习小记录
- 前言
- 一、spring是什么?
- 二、ioc与aop
- 三、Bean的作用域
- 四、单例Bean是否线程安全?
- 五、spring的好处是什么?
- 六、spring默认事务传播
- 七、@transaction 事务什么时候失效
- 八、SpringMVC的工作流程
- 九、SpringBoot自动装配原理
- 九、怎么自写springboot中的starter?
- 十、springboot application的运行机制?
- 十一、BeanFactory和ApplicationContext有什么区别?
- 十二、Bean的生命周期
- 十三、Spring自动装配方式
- 十四、SpringBoot、SpringMVC和Spring有什么区别?
- 十五、SpringMVC有哪些组件?
- 十五、Spring怎么进行异常处理?
前言
此文资料从各个地方的优秀作者中收集,在这做一个收藏与分享。
一、spring是什么?
二、ioc与aop
ioc:容器概念:它实际上是一个map,里面存放各种对象,当在项目启动时用会根据全限定类名读取配置文件的里面的bean节点,扫描有注解的类使用反射创建对象放到map里。交给它帮我们管理。
控制反转:没有ioc的时候,如a依赖于b,是我们主动去new对象,控制权在我们自己手上,当引入ioc的时候,对象间没有直接联系,在a需要b的时候ioc会注入到我们需要的地方。由主动变为被动。也就是为什么要叫控制反转的原因。
三、Bean的作用域
四、单例Bean是否线程安全?
五、spring的好处是什么?
六、spring默认事务传播
A->B 当前没事务则创建事务,当前有事务则加入
七、@transaction 事务什么时候失效
1-发生自调用,因为spring事务得由代理对象的bean完成,this不是代理类
2-数据库不支持
3-方法不是public
4-没有被spring管理
5-异常被吃掉,事务不会回滚(openFeign远程调用感知不了异常)
八、SpringMVC的工作流程
九、SpringBoot自动装配原理
九、怎么自写springboot中的starter?
写一个@configuration配置类,将@bean写在里面,并在meta-inf/spring.factories中写入该配置类(类的全路径),因为自己写的starter没有办法配置到对应的包扫描路径,只能自己去写入。springboot会按照约定对该文件进行扫描加载。被加载到的类厘米的@Bean自然也会被跟着写入容器。生成bean
十、springboot application的运行机制?
springboot根据配置文件自动装配所属依赖的类
再用动态代理的方式将组件注入容器
十一、BeanFactory和ApplicationContext有什么区别?
十二、Bean的生命周期
十三、Spring自动装配方式
在配置文件找到bean 里面有个属性autowire 设为ref则为手动装配(默认),还有通过byName属性名装配,和byType通过类型装配、autodetect如果有构造器则用构造器装配没有就用类型装配
十四、SpringBoot、SpringMVC和Spring有什么区别?
十五、SpringMVC有哪些组件?
十五、Spring怎么进行异常处理?
@ControllerAdvice 加在类上
@ExceptionHandler(NoHandlerFoundException.class)加方法上表示出现该异常由这个方法去处理