1.BeanFactory 和 和 ApplicationContext 有什么区别?

beanfactory顾名思义,它的核心概念就是 bean 工厂,用作于 bean 生命周期的管理,而applicationcontext 这个概念就比较丰富了,单看名字(应用上下文)就能看出它包含的范围更广,它继承自 bean factory 但不仅仅是继承自这一个接口,还有继承了其他的接口,所以它不仅仅有 bean factory 相关概念,更是一个应用系统的上下文,其设计初衷应该是一个包罗万象的对外暴露的一个综合的 API.

2. Spring Bean 的生命周期

参考:https://blog.csdn.net/a327369238/article/details/52193822
Java面试宝典 - Spring

3.Spring IOC 如何实现

参考: https://www.cnblogs.com/ITtangtang/p/3978349.html

4. 说说 Spring AOP

参考:https://www.cnblogs.com/hongwz/p/5764917.html

5.Spring AOP 实现原理

参考:https://blog.csdn.net/moreevan/article/details/11977115/

6.动态代理(cglib 与 与 JDK )

java 动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
而 cglib 动态代理是利用 asm 开源包,对代理对象类的 class 文件加载进来,通过修改其字节码生成子类来处理

1.如果目标对象实现了接口,默认情况下会采用 JDK 的动态代理实现 AOP
2.如果目标对象实现了接口,可以强制使用 CGLIB 实现 AOP
3.如果目标对象没有实现了接口,必须采用 CGLIB 库,spring 会自动在 JDK 动态代理
和 CGLIB 之间转换
如何强制使用 CGLIB 实现 AOP?
(1)添加 CGLIB 库,SPRING_HOME/cglib/*.jar
(2)在 spring 配置文件中加入<aop:aspectjautoproxy proxytargetclass=“true”/>
JDK 动态代理和 CGLIB 字节码生成的区别?
(1)JDK 动态代理只能对实现了接口的类生成代理,而不能针对类
(2)CGLIB 是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法,因为
是继承,所以该类或方法最好不要声明成 final

参考:https://blog.csdn.net/u013126379/article/details/52121096

7.Spring 事务实现方式

参考:https://blog.csdn.net/liaohaojian/article/details/70139151

8. Spring 事务底层的实现

参考:https://www.cnblogs.com/wangyayun/p/6530189.html

9.如何自定义注解实现功能

可以结合 spring 的 AOP,对注解进行拦截,提取注解。
大致流程为:

  1. 新建一个注解@MyLog,加在需要注解申明的方法上面
  2. 新建一个类 MyLogAspect,通过@Aspect 注解使该类成为切面类。
  3. 通过@Pointcut 指定切入点 ,这里指定的切入点为 MyLog 注解类型,也就是被@MyLog
    注解修饰的方法,进入该切入点。
  4. MyLogAspect 中的方法通过加通知注解(@Before、@Around、@AfterReturning、
    @AfterThrowing、@After 等各种通知)指定要做的业务操作

10. Spring MVC

1. 先用文字描述

  1. 用户发送请求到 DispatchServlet
  2. DispatchServlet 根据请求路径查询具体的 Handler
  3. HandlerMapping 返 回 一 个 HandlerExcutionChain 给 DispatchServlet
    HandlerExcutionChain:Handler 和 Interceptor 集合
  4. DispatchServlet 调用 HandlerAdapter 适配器
  5. HandlerAdapter 调用具体的 Handler 处理业务
  6. Handler 处理结束返回一个具体的 ModelAndView 给适配器,ModelAndView:model–>数
    据模型,view–>视图名称
  7. 适配器将 ModelAndView 给 DispatchServlet
  8. DispatchServlet 把视图名称给 ViewResolver 视图解析器
  9. ViewResolver 返回一个具体的视图给 DispatchServlet
  10. 渲染视图
  11. 展示给用户

2.画图解析

Java面试宝典 - Spring

10. Spring MVC 启动流程

参考:https://www.cnblogs.com/RunForLove/p/5688731.html

11.Spring 的单例实现原理

参考:https://blog.csdn.net/cs408/article/details/48982085

12. Spring 框架中用到了哪些设计模式

Spring 框架中使用到了大量的设计模式,下面列举了比较有代表性的:
1.代理模式—在 AOP 和 remoting 中被用的比较多。
2.单例模式—在 spring 配置文件中定义的 bean 默认为单例模式。
3.模 板 方 法 — 用 来 解 决 代 码 重 复 的 问 题 。 比 如 . RestTemplate, JmsTemplate,
JpaTemplate。
4.工厂模式—BeanFactory 用来创建对象的实例。
5.适配器–spring aop 装饰器–spring data hashmapper
6.观察者 spring 时间驱动模型
7.回调–Spring ResourceLoaderAware 回调接口
8.前端控制器–spring 用前端控制器 DispatcherServlet 对请求进行分发

13. Spring 其他产品(Srping Boot 、Spring Cloud 、Spring Secuirity 、Spring Data 、Spring AMQP

参考: https://www.jianshu.com/p/b3e4aaa83a7d

史上最全的并发编程脑图:https://www.processon.com/view/5f472fd25653bb576974908f

相关文章:

  • 2021-09-11
  • 2021-11-19
  • 2018-09-11
  • 2021-11-08
  • 2021-11-04
  • 2021-12-03
  • 2021-11-05
  • 2021-01-06
猜你喜欢
  • 2021-10-06
  • 2017-12-19
  • 2021-11-08
  • 2021-11-13
  • 2021-11-14
  • 2019-06-30
  • 2021-10-30
相关资源
相似解决方案