一、SpringBoot常用注解容器相关SpringBootApplication启动类复合注解Component/Service/Controller/Repository注册 BeanBean方法注册 BeanAutowired依赖注入。Web 接口RestControllerController ResponseBodyController标识这是控制器交给 Spring 管理ResponseBody方法返回值直接作为 JSON 响应体不会跳转页面GetMapping用来接收 GET 请求也可以用RequestMapping(/user/add,method RequestMethod.POST)用来接收 GET 请求PostMapping用来接收 POST 请求RequestBody接收 JSONRequestParam接收普通表单 /url 参数PathVariable路径参数。配置文件读取Value、ConfigurationPropertieuser: name: 张三 age: 20Component public class TestConfig { // 读取单个零散配置 Value(${user.name}) private String userName; Value(${user.age}) private Integer age; }Data Component ConfigurationProperties(prefix user) public class UserProp { private String name; private Integer age; }二、SpringBoot 写一个 HTTP 接口完整流程创建类加上RestController编写方法添加GetMapping/PostMapping指定路径定义参数注解接收前端数据编写业务逻辑返回结果启动项目通过地址访问接口。Spring 的数据库连接池SpringBoot 默认使用HikariCP作为数据库连接池。作用提前创建一批数据库连接放到池子里程序操作数据库时直接取用用完归还避免频繁创建销毁连接提升性能。核心参数最大连接数、最小空闲连接、超时时间。三、SpringBoot 区分多环境配置采用多环境配置文件application-dev.yml开发环境application-test.yml测试环境application-prod.yml生产环境在主配置文件application.yml通过spring.profiles.activedev指定激活哪个环境 启动时也可以命令行参数指定环境。 公共配置放主文件各个环境独有的配置写在对应环境文件。四、Spring Bean 和 Java Bean 的区别Java Bean普通 Java 规范私有成员变量、get/set 方法、无参构造只是一个标准实体类单纯用来存数据。Spring Bean交给 Spring IoC 容器管理的对象。 容器负责创建、依赖注入、生命周期管理可以是 Service、Controller、Mapper 等任意对象不强制遵守 JavaBean 规范。五、循环依赖-三级缓存什么是循环依赖简单说就是 A 对象依赖 B 对象B 对象又依赖 A 对象类似的代码如下Component public class A{ Autowired private B b; } Component public class B{ Autowired private A a; }其他还有很多种方式如 A 依赖 BB 依赖 CC 依赖 A或是 A 依赖 A 自己只要产生了依赖关系的闭环即造成了循环依赖。三级缓存解决循环依赖创建 A执行构造方法实例化将 A 的 ObjectFactory 对象工厂接口放入三级缓存填充 A 的属性发现需要 B开始创建 BB 填充属性发现需要 A去一级缓存找 A → 没有去二级缓存找 A → 没有去三级缓存找到 A 的工厂调用工厂拿到 A 半成品放入二级缓存同时删除三级缓存里面 A 的工厂将 A 注入 BB 完成创建放入一级缓存回到 A把 B 注入 AA 创建完成移入一级缓存为什么需要第三级缓存核心为支持 AOP 动态代理如果只有二级缓存拿到的永远是原始对象 三级缓存的ObjectFactory可以在循环依赖触发时判断是否需要生成代理对象向外暴露代理 Bean。 没有三级缓存循环依赖场景下无法正确返回代理对象。通俗总结二级缓存只能存原始对象三级缓存工厂具备能力按需生成代理。Spring3.6 之前如何解决循环依赖在 Spring 3.6 之前Spring 通过使用一级和二级缓存来解决单例 Bean 的循环依赖问题而从 3.6 版本开始通过引入三级缓存Spring 能够更全面地处理包括 AOP 在内的更复杂的循环依赖情况。六、Spring MVC流程简单叙述1.request携带 url 进入 DispatcherServlet2.查找hander得到处理器根据处理器获得适配器3.适配器执行controller方法返回ModelAndView4.解析视图5.视图渲染返回具体过程及源代码request 携带 url 进入 DispatcherServlet调用 getHandler () 通过 HandlerMapping 查找处理器执行链再调用 getHandlerAdapter ()根据处理器匹配对应的适配器适配器执行 Controller 方法返回 ModelAndView视图解析器解析视图名称视图渲染最终响应返回浏览器