深入浅出spring boot 2.x 01-springMVC对比【笔记】

说明:对此书看时所做的记录,对具体的功能点可以自行百度

SpringMVC
  • spring ioc控制反转,管理bean的容器
  • spring di 依赖注入,如何从ioc容器取出使用
@Autowired 如果有多个不同bean,定义属性时
  1. 名称是啥就从bean容器中如啥,没有则报错,不报错方法使用required=false
  2. 还可以使用@Primary,优先注入
  3. 多个bean注入报错,使用@Qualifer明确注入bean的名称
bean的生命周期
  • 默认情况初始化时就完成了依赖注入,但有些时候需要使用时才进行注入,使用@Component的layInit进行延迟初始化
springmvc作用域
  • 可以使用Webapplicationcontext去定义其他作用域,如@SCope(Webapplicationcontext.SCope_request),每次请求都试新的bean
spring默认是isSingleton,如果要变成isPrototype
  • 在bean类上加入@Scope(ConfigurableBeanFactory.SCope.Prototype),这样每次使用都创建
  • 单例模式是spring推荐的配置,它在高并发下能极大的节省资源,提高服务抗压能力
  • spring IOC的bean管理器是“绝对的线程安全
spring单例模式是如何实现高并发的?
  • spring单例模式是指,在内存中只实例化一个类的对象
  • spring中是利用ThreadLocal来以空间换取时间,把每个线程可能存在线程安全问题的参数值放进了ThreadLocal,这样虽然是一个实例在操作,但是不同线程下的数据互相之间都是隔离的
  • 因为运行时创建和销毁的bean大大减少了,所以大多数场景下这种方式对内存资源的消耗较少,而且并发越高优势越明显
springboot
  • springboot原则:简化开发,约定大于配置
  • springcloud是分布式的解决方案
  • springboot通过maven依赖找到对应的jar包和嵌入的服务器,然后使用默认自动配置类来创建默认的开发环境
springboot读取配置文件的属性
  • @Value或@ConfigurationProperty

    • 读取其他配置文件需要在运行的主文件上加@PropertySource,指定名称即可
  • 有时配置文件不存在导入应用无法启动,可以设置条件装配bean,如果条件不存在则报响应的错误

    • 在数据源上加@Conditional(databaseCondition.class)
      • 此时先读取databaseConditional(必须实现Conditional接口和matches方法,用此去判断数据源的每个属性是否存在),符合后再装配数据源

猜你喜欢

转载自blog.csdn.net/i6725545/article/details/87690222