1.springboot的功能优点
先回答:总的来说是约定大于配置
1.可以以jar包的形式独立运行项目
2.内嵌tomat或者jetty,无需以war包形式部署
3.starter pom简化了maven依赖的导入
2.springboot的starter是做什么的?
诞生starter原因是当不同项目互相引入jar包时每次都需要改变@ComponentScan注解中的参数
3.springboot启动原理
面试----SpringBoot自动装配原理_小白咯咯的博客-CSDN博客
源码跟踪到META-INF:
@SpringBootApplication==>@EnableAutoConfiguration==>AutoConfigurationImportSelector==>getCandidateConfigurations==>loadFactoryNames==>classLoader.getResources("META-INF/spring.factories")
4springboot自动装配原理
从springboot启动原理中的注解进入到AutoConfigurationImportSelector后,先读取所有jar包的“
META-INF/spring.factories”文件内容的value。放到一个List<String>
接着删除LIst<String>中的重复项,然后调用sort方法排序。再新建一个set集合用来存“被排除的依赖”,调用checkExcludedClasses方法从list中排除依赖。然后调用filter中的match方法匹配,string中的元素与class类是否一致,一致的话加载启动
6.springboot解决跨域的方法
SpringBoot项目针对跨域问题的三种解决方案 - 简书
7.spring的循环依赖问题
循环依赖指的是多个对象之间的依赖关系形成一个闭环。
循环依赖分两种:属性的循环依赖和构造器的循环依赖。
1.构造器的循环依赖无法解决:构造器实例化前必须先实例化参数,循环引用的参数无法提前被实例化
2.属性注入(setting)的循环依赖解决:核心思想是3级缓存
①Spring根据无参构造创建bean,并暴露一个ObjectFactory,用于提前暴露一个创建中的bean,将a标识放在当前创建bean的池中
②……………….暴露一个ObjectFactory,将b标识放在当前创建的bean池中
③………………..暴露一个ObjectFactory,将c标识放在bean池中
④先注入a,再注入b再注入c
8 bean的生命周期
面试题积累-Spring-bean的生命周期_Rick1024-CSDN博客_springbean的生命周期面试
9.springboot注解
Spring Boot最核心的27个注解,你了解多少? - 无敌的码农 - 博客园
10.spring的事务传播机制
默认的传播行为propagation_required,默认的隔离级别isolation_default,使用数据库默认的事务隔离级别
Spring事务七大传播机制与五个隔离级别_延宝小白马的博客-CSDN博客
11.springboot事务失效8大原因
Spring事务失效的 8 大原因 - ldsweely - 博客园
12@Autowird和@Resources区别
@Autowire默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置它required属性为false,如果我们想使用按照名称装配,可以结合@Qualifier注解一起使用。
@Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象.
13.SpringMVC原理