第四篇:SSM框架(Spring、SpringMVC、Mybatis)

SSM框架(Spring、SpringMVC、Mybatis)文章目录

  • 一、Spring
      • 1. 简单介绍下Spring?
    • 1. IOC(控制反转)
      • 1. 概念?
      • 2. IOC容器有哪些?
      • 3. ApplicationContext和FBeanFactory的区别?
      • 4. BeanFactory 和 FactoryBean 的区别?
      • 5. bean标签中的属性?
      • 6. Spring 中的单例bean是线程安全的么?
      • 7. 简单描述下Spring容器中bean的生命周期?
    • 2. DI(依赖注入)
      • 1. 概念?
      • 2. 依赖注入的方式有哪些?
    • 3. AOP(面向切面编程)
  • 二、SpringMVC
  • 三、Mybatis
  • 总结

一、Spring

1. 简单介绍下Spring?

	Spring是一个Java开发框架,用来简化Java开发.有三个核心组件, IOC (控制反转),DI(依赖注入),AOP(面向切面编程).

1. IOC(控制反转)

1. 概念?

  • 控制反转. 反转的是对象的创建权, 让Spring帮我们创建对象, 我们使用的时候直接从容器中获取.

2. IOC容器有哪些?

  • ClassPathXmlApplicationContext, FileSystemXmlApplicationContext, AnnottationfigApplicationContext, BeanFactory

3. ApplicationContext和FBeanFactory的区别?

  • ApplicationContext和BeanFacatory都是Spring容器.
  • 区别是 BeanFactory 是底层接口,ApplicationContext是派生接口,功能更强大. BeanFactory是懒加载,使用的时候才会创建Bean. 内存不足时, 可以使用BeanFactory. ApplicationContext默认在容器初始化的时候就加载所有bean, 好处是使用的时候 拿来即用, 无需等待, 缺点是起始阶段比较耗费内存.

4. BeanFactory 和 FactoryBean 的区别?

  • BeanFactory 是Spring容器, FactoryBean 是一个特殊的bean ,用于创建bean, 创建出来的bean会放到容器中.

5. bean标签中的属性?

	

6. Spring 中的单例bean是线程安全的么?

  • 不安全 . 但是Spring中的bean是无状态的, 也就是不存储数据, 所以某种程度上来讲是线程安全的.
  • 怎么解决线程安全问题?
    1.把bean的作用域改为非单例 prototype
    2.把共享变量放到ThreadLocal中, ThreadLocal是线程私有变量, 线程间隔离, 也可以解决线程安全问题.

7. 简单描述下Spring容器中bean的生命周期?

  • BeanDefinition -> 实例化 -> 依赖注入 -> 初始化 -> 使用 -> 销毁
    1.先通过配置文件或者注解拿到所有BeanDefinition , 并放到BeanDefinitionMap中
    2.从BeanDefinitionMap中拿到bean定义并进行实例化 new
    3.依赖注入, 给容器中bean中的属性赋值
    4.初始化, 给属性赋值
    5.初始化完成后, bean真正创建完成, 就可以把bean放到Spring容器中, ConcurrentHashMap, 我们使用的时候就可以通过getBean来获取bean
    6.容器销毁的时候, bean也会跟着销毁
  • BeanDefinition 是bean定义. 描述的是 这个bean的类型, 即这个bean 的名字, 有哪些属性, 有哪些构造函数, 有哪些方法.

2. DI(依赖注入)

1. 概念?

  • 依赖注入, 给容器中bean的属性赋值就叫依赖注入.

2. 依赖注入的方式有哪些?

  • 构造器注入
  • setter注入

你可能感兴趣的:(spring,mybatis,mvc)