- 对IOC的理解
- 单例bean与单例模式
- spring事务传播机制-※
- spring事务什么时候会失效-√
- spring中创建的bean,生命周期有哪些-※
- spring中的bean是线程安全的吗?
- applicationContext和beanFactory有什么区别?
- spring中的事务是如何实现的?-※
- @Transactional什么时候会失效?
- spring容器的启动流程是怎样的?-※
- spring用到了哪些设计模式?
- spring boot常用注解及其底层实现-※
- springboot是如何启动Tomcat?
inverse of control,控制翻转,将bean的生成交给spring管理,例如,@autowired自动装配的mapper层对象。
好处:单例bean可以有效复用,减少对象生成的时间成本。各种bean还有自身的应用场景。
spring自动装配出来的对象全都会指向同一个单例bean,不强制约束用户不可创建第二个对象。
单例模式针对的是类而言的,如果某个类应用了单例模式,那么这个类就不可能创建出第二个对象,所有该类的引用都会指向同一个对象,不管是spring自动装配还是用户自己new。
数据库:数据库如果不支持事务,那么spring事务就会失效
Java:
类:事务所在类没有对应的注解,spring没有在容器里面生成该类的bean[类上面没有component之类的注解]
方法:方法上没有加上事务注解或者方法的权限修饰符不是public
调用:调用方法没有使用代理对象,而是通过原对象调用的方法。[自己new]
1.推断构造方法
2.实例化
3.依赖注入[构造方法可能需要部分外部注入属性;成员变量中依赖于其他类,等等多种需要将其他实例注入的情况]
4.处理@postConstruct注解,构造之后还可以执行的自定义处理
5.处理initializingBean接口复写内容,如果实现了该接口的话[前面就是bean的实例化,这一步就是bean的初始化,这就是两者的区别]
6.生成代理对象,最后生成bean
如果bean上有状态,就不是线程安全的
如果bean上没有状态,就是线程安全的
beanFatory的功能,applicationContext都有,但applicationContext还有其他功能[获取系统环境变量、事件发布]
类:事务所在类没有对应的注解,spring没有在容器里面生成该类的bean
方法:方法上没有加上事务注解或者方法的权限修饰符不是公共的
调用:调用方法没有使用代理对象,而是通过原对象调用的方法。
1.扫描所有beanDefinition对象,并保存至map
2.筛选出单例bean进行bean创建,推断构造方法-实例化-依赖注入-postConstruct注解-beanInition接口复写方法-生成代理对象-生成bean
3.applicationContext发布spring容器启动事件
1.beanFactory-工厂模式
2.单例bean-单例模式
3.代理对象-代理模式
常用注解有
1.@bean 方法级注解,可用于对应的单例bean对象
2.@autowired 用于生成单例bean的引用;要求原类增加类注解例如component\service\controller\mapper等来交给spring托管
3.@controller\@service\@mapper,这三都是类注解,用于指定controller、service、mapper类,从而可以自动将请求匹配到controller对应方法上,以及自动调用对应的SQL
4.@GetMapping,@PostMapping,用于指定请求的匹配类型,方法接收get请求、post请求等等
具体实现 不太清楚
1.检索是否有tomcat依赖
2.将tomcat实例化,并加入到spring容器中
3.启动tomcat实例