Skip to content
pangdashou edited this page Jun 4, 2020 · 2 revisions

Spring

IOC AOP概念理解和实现

  1. IOC的类型:构造器、setter等,区别:前者强依赖、后者弱
  2. Bean的作用域的定义
  3. Bean线程安全问题
  4. Bean的生命周期
    1. pring容器读取XML文件中bean的定义并实例化bean。
    2. Spring根据bean的定义设置属性值。
    3. 如果该Bean实现了BeanNameAware接口,Spring将bean的id传递给setBeanName()方法。
    4. 如果该Bean实现了BeanFactoryAware接口,Spring将beanfactory传递给setBeanFactory()方法。
    5. 如果任何bean BeanPostProcessors 和该bean相关,Spring调用postProcessBeforeInitialization()方法。
    6. 如果该Bean实现了InitializingBean接口,调用Bean中的afterPropertiesSet方法。如果bean有初始化函数声明,调用相应的初始化方法。
    7. 如果任何bean BeanPostProcessors 和该bean相关,调用postProcessAfterInitialization()方法。
    8. 如果该bean实现了DisposableBean,调用destroy()方法。
  5. Bean的生命周期的的方法:init-method destory-method等
  6. 循环依赖问题
  7. Bean的自动装配
    1. no:默认的方式是不进行自动装配,通过手工设置ref 属性来进行装配bean。
    2. byName:通过参数名自动装配,Spring容器查找beans的属性,这些beans在XML配置文件中被设置为byName。之后容器试图匹配、装配和该bean的属性具有相同名字的bean。
    3. byType:通过参数的数据类型自动自动装配,Spring容器查找beans的属性,这些beans在XML配置文件中被设置为byType。之后容器试图匹配和装配和该bean的属性类型一样的bean。如果有多个bean符合条件,则抛出错误。
    4. constructor:这个同byType类似,不过是应用于构造函数的参数。如果在BeanFactory中不是恰好有一个bean与构造函数参数相同类型,则抛出一个严重的错误。
    5. autodetect:如果有默认的构造方法,通过 construct的方式自动装配,否则使用 byType的方式自动装配。
  8. Spring支持的事务管理:编程、声明。
  9. 51.解释AOP 面向切面编程,或AOP允许程序员模块化横向业务逻辑,或定义核心部分的功能,例如日志管理和事务管理。
  10. 52.切面(Aspect) AOP的核心就是切面,它将多个类的通用行为封装为可重用的模块。该模块含有一组API提供 cross-cutting功能。例如,日志模块称为日志的AOP切面。根据需求的不同,一个应用程序可以有若干切面。在Spring AOP中,切面通过带有@Aspect注解的类实现。
  11. 53.在Spring AOP中concern和 cross-cutting concern的区别是什么? Concern(核心逻辑):表示在应用程序中一个模块的行为。Concern可以定义为我们想要实现的功能。 Cross-cutting concern(横向的通用逻辑):指的是整个应用程序都会用到的功能,它影响整个应用程序。例如,日志管理(Logging)、安全管理(Security)以及数据交互是应用程序的每个模块都要涉及到的,因此这些都属于Cross-cutting concern。
  12. 54.连接点(Join point) 连接点代表应用程序中插入AOP切面的地点。它实际上是Spring AOP框架在应用程序中执行动作的地点。
  13. 55.通知(Advice) 通知表示在方法执行前后需要执行的动作。实际上它是Spring AOP框架在程序执行过程中触发的一些代码。 Spring切面可以执行一下五种类型的通知: before(前置通知):在一个方法之前执行的通知。 after(最终通知):当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。 after-returning(后置通知):在某连接点正常完成后执行的通知。 after-throwing(异常通知):在方法抛出异常退出时执行的通知。 around(环绕通知):在方法调用前后触发的通知。
  14. 56.切入点(Pointcut) 切入点是一个或一组连接点,通知将在这些位置执行。可以通过表达式或匹配的方式指明切入点。
  15. 57.什么是引入? 引入允许我们在已有的类上添加新的方法或属性。
  16. 58.什么是目标对象? 被一个或者多个切面所通知的对象。它通常是一个代理对象。也被称做被通知(advised)对象。

常用注解

  1. @Autowired和@Resource区别
  2. @ResponseBody @Qualifier等作用

SpringMVC理解

  1. DispatcherServlet

Sping事件

SpringBoot自动配置原理

Clone this wiki locally