springboot实战

Spring MVC

spring对每个bean提供一个scope属性表示bean的作用域,这些bean大多是无状态对象。single类型的无状态bean都是线程安全的,例如每个dao提供的方法都只是对数据的CURD,每个数据库connection都作为函数局部变量,处于栈中,属于线程私有的内存区域,用完即回收。每个controller被多个线程执行,springmvc对请求拦截粒度时基于每个方法(而struct2时基于类,也就是多例controller,频繁创建,回收,影响性能)。spring没有对bean的多线程安全作出任何保证和措施,所以我们在bean的设计中声明任何有状态的实例变量和类变量,如果非得有,则要使用ThreadLocal变量私有化或使用synchronized,lock,cas等实现线程同步方法

springBoot的结构

springboot中常用的注解

spring boot 配置文件加载顺序

项目内配置文件加载顺序

SpringBoot项目启动会扫描以下位置的application.properties或者application.yml文件作为SpringBoot的默认配置文件,具体的目录位置见下图。

外部配置加载顺序SpringBoot也可以从以下位置加载配置

优先级从高到低,高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置 。