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中常用的注解