Spring 面试重点总结!

BeanFactory 和 ApplicationContext 有什么区别

功能:

BeanFactory 负责读取bean的配置文档,管理bean的加载、实例化、维护bean 之间的依赖关系,负责bean 的生命周期。(BeanFactorty接口提供了配置框架及基本功能,但是无法支持spring的aop功能和web应用。)

ApplicationContext 作BeanFactory的派生类, 除了提供上述BeanFactory所能提供的功能之外,还提供了更完整的框架功能:

  • 提供国际化的消息访问 
  • 资源访问
  • 事件传播特性 (即支持aop特性)

区别:

BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化

ApplicationContext则相反,它是在容器启动时,一次性创建了所有的Bean

 

Spring Bean 的生命周期

  • Bean 容器找到配置文件中 Spring Bean 的定义。
  • Bean 容器利用 Java Reflection API 创建一个Bean的实例。
  • 如果涉及到一些属性值 利用 set()方法设置一些属性值。
  • 如果 Bean 实现了 BeanNameAware 接口,调用 setBeanName()方法,传入Bean的名字。
  • 如果Bean实现了 BeanFactoryAware 接口,调用 setBeanFactory()方法。
  • 与上面的类似,如果实现了其他 *.Aware接口,就调用相应的方法。
  • 如果有和加载这个 Bean 的 Spring 容器相关的 BeanPostProcessor 对象,执行postProcessBeforeInitialization() 方法
  • 如果Bean实现了InitializingBean接口,执行afterPropertiesSet()方法。
  • 如果 Bean 在配置文件中的定义包含 init-method 属性,执行指定的方法。
  • 如果有和加载这个 Bean的 Spring 容器相关的 BeanPostProcessor 对象,执行postProcessAfterInitialization() 方法
  • 当要销毁 Bean 的时候,如果 Bean 实现了 DisposableBean 接口,执行 destroy() 方法。
  • 当要销毁 Bean 的时候,如果 Bean 在配置文件中的定义包含 destroy-method 属性,执行指定的方法。

 

 

Spring Bean 生命周期

 

Spring IOC

IoC(Inverse of Control:控制反转)是一种设计思想,就是 将原本在程序中手动创建对象的控制权,交由Spring框架来管理。Spring 将对象之间的相互依赖关系交由IOC 容器来管理,并由IOC 完成对象的注入。

这样可以很大程度上简化应用的开发,把应用从复杂的依赖关系中解放出来,降低应用之间的耦合性。

 

Spring AOP

AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

Spring AOP就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,这时候Spring AOP会使用Cglib ,这时候Spring AOP会使用 Cglib 生成一个被代理对象的子类来作为代理。

 

 

SpringMVC 工作原理

流程说明(重要):

  • 客户端(浏览器)发送请求,直接请求到 DispatcherServlet。
  • DispatcherServlet 调用 HandlerMapping,根据请求信息(url)解析请求对应的 Handler。
  • 解析到对应的 Handler(也就是我们平常说的 Controller 控制器)后,开始由 HandlerAdapter 适配器处理。
  • HandlerAdapter 会根据 Handler来调用对应的处理器处理请求,并处理相应的业务逻辑。
  • 处理器处理完业务后,会返回一个 ModelAndView 对象,Model 是返回的数据对象,View 是个逻辑上的 View。
  • ViewReslover解析后返回具体View。
  • DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
  • 把 View 返回给请求者(浏览器)

 

 

发布了12 篇原创文章 · 获赞 6 · 访问量 5085
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览