做雕塑网站,丹阳网站推广,深圳做电子工厂的网站,鄂州网站建设公司目录#xff1a; 第一题 ApplicationContext和BeanFactory有什么区别#xff1f;第二题 Spring中的事务是如何实现的#xff1f;第三题 Spring中什么时候Transactional会失效#xff1f;第四题 Spring容器启动流程是怎样的#xff1f;第五题 Spring Boot、Spring MVC 和 S… 目录 第一题 ApplicationContext和BeanFactory有什么区别第二题 Spring中的事务是如何实现的第三题 Spring中什么时候Transactional会失效第四题 Spring容器启动流程是怎样的第五题 Spring Boot、Spring MVC 和 Spring 有什么区别 第一题 ApplicationContext和BeanFactory有什么区别
BeanFactory是Spring中⾮常核⼼的组件表示Bean⼯⼚可以⽣成Bean维护Bean⽽ApplicationContext继承了BeanFactory所以ApplicationContext拥有BeanFactory所有的特点也是⼀个Bean⼯⼚但是ApplicationContext除开继承了BeanFactory之外还继承了诸如EnvironmentCapable、MessageSource、ApplicationEventPublisher等接⼝从⽽ApplicationContext还有获取系统环境变量、国际化、事件发布等功能这是BeanFactory所不具备的
第二题 Spring中的事务是如何实现的
Spring事务底层是基于数据库事务和AOP机制的⾸先对于使⽤了Transactional注解的BeanSpring会创建⼀个代理对象作为Bean当调⽤代理对象的⽅法时会先判断该⽅法上是否加了Transactional注解如果加了那么则利⽤事务管理器创建⼀个数据库连接并且修改数据库连接的autocommit属性为false禁⽌此连接的⾃动提交这是实现Spring事务⾮ 常重要的⼀步然后执⾏当前⽅法⽅法中会执⾏sql执⾏完当前⽅法后如果没有出现异常就直接提交事务如果出现了异常并且这个异常是需要回滚的就会回滚事务否则仍然提交事务Spring事务的隔离级别对应的就是数据库的隔离级别Spring事务的传播机制是Spring事务⾃⼰实现的也是Spring事务中最复杂的Spring事务的传播机制是基于数据库连接来做的⼀个数据库连接⼀个事务如果传播机制配置为 需要新开⼀个事务那么实际上就是先建⽴⼀个数据库连接在此新数据库连接上执⾏sql
第三题 Spring中什么时候Transactional会失效
因为Spring事务是基于代理来实现的所以某个加了Transactional的⽅法只有是被代理对象调⽤时 那么这个注解才会⽣效所以如果是被代理对象来调⽤这个⽅法那么Transactional是不会失效的。
同时如果某个⽅法是private的那么Transactional也会失效因为底层cglib是基于⽗⼦类来实现 的⼦类是不能重载⽗类的private⽅法的所以⽆法很好的利⽤代理也会导致Transactianal失效
第四题 Spring容器启动流程是怎样的
在创建Spring容器也就是启动Spring时⾸先会进⾏扫描扫描得到所有的BeanDefinition对象并存在⼀个Map中然后筛选出⾮懒加载的单例BeanDefinition进⾏创建Bean对于多例Bean不需要在启动过程中去进 ⾏创建对于多例Bean会在每次获取Bean时利⽤BeanDefinition去创建利⽤BeanDefinition创建Bean就是Bean的创建⽣命周期这期间包括了合并BeanDefinition、推断构造⽅法、实例化、属性填充、初始化前、初始化、初始化后等步骤其中AOP就是发⽣在初始化后这⼀步骤中单例Bean创建完了之后Spring会发布⼀个容器启动事件Spring启动结束在源码中会更复杂⽐如源码中会提供⼀些模板⽅法让⼦类来实现⽐如源码中还涉及到⼀些BeanFactoryPostProcessor和BeanPostProcessor的注册Spring的扫描就是通过BenaFactoryPostProcessor来实现的依赖注⼊就是通过BeanPostProcessor来实现的在Spring启动过程中还会去处理Import等注解
第五题 Spring Boot、Spring MVC 和 Spring 有什么区别
spring是⼀个IOC容器⽤来管理Bean使⽤依赖注⼊实现控制反转可以很⽅便的整合各种框架提供AOP机制弥补OOP的代码重复问题、更⽅便将不同类不同⽅法中的共同处理抽取成切⾯、⾃动注⼊给⽅法执⾏⽐如⽇志、异常等
springmvc是spring对web框架的⼀个解决⽅案提供了⼀个总的前端控制器Servlet⽤来接收请求然后定义了⼀套路由策略url到handle的映射及适配执⾏handle将handle结果使⽤视图解析技术⽣成视图展现给前端
springboot是spring提供的⼀个快速开发⼯具包让程序员能更⽅便、更快速的开发springspringmvc应⽤简化了配置约定了默认配置整合了⼀系列的解决⽅案starter机制、redis、mongodb、es可以开箱即⽤
如果我的内容对你有帮助请点赞评论收藏。创作不易大家的支持就是我坚持下去的动力