为什么要有 spring
spring 的历史版本演进

POJO 和 JavaBean 的区别

  • POJO(Plain Ordinary Java Object):简单 java 对象,有一些 private 的参数作为对象属性,有对应的 getter 和 setter 方法,无继承和接口,不遵循某些约定或 框架规范;
  • JavaBean:符合规范(满足某种条件时能被某些工具利用)的 POJO
    • 所有属性为 private;
    • 必须有一个公共的缺省构造函数,即提供无参构造器;
    • 属性使用 getter 和 setter 来访问,其他方法遵从标准命名规范;
    • 实现 serializable 接口,可序列化;

spring 上下文对象

  • AnnotationConfigApplicationContext:从一个或多个基于 java 的配置类中加载上下文定义,适用于 java 注解的方式;
  • ClassPathXmlApplicationContext:从类路径下的一个或多个 xml 配置文件中加载上下文定义,适用于 xml 配置的方式;
  • FileSystemXmlApplicationContext:从文件系统下的一个或多个 xml 配置文件中加载上下文定义,也就是说系统盘符中加载 xml 配置文件;
  • AnnotationConfigWebApplicationContext:专门为 web 应用准备的,适用于注解方式;
  • XmlWebApplicationContext:从 web 应用下的一个或多个 xml 配置文件加载上下文定义;

spring 单例 与 bean 单例的区别

  • bean 单例指在一个 JVM 进程中仅有一个实例,Spring单例 是指在一个 Spring Bean 容器(ApplicationContext)中仅有一个实例;

Spring 基础 - 图1
Filter、Interceptor、AOP的执行位置
Spring 基础 - 图2

参考

springBoot 如何部署 tomcat(内外嵌区分)
spring 和 springBoot 的比较
spring、springMVC 和 springBoot 的关系
进程和容器的关系
Spring单例Bean与单例模式的区别