ToB企服应用市场:ToB评测及商务社交产业平台

标题: Spring入门系列:浅析知识点 [打印本页]

作者: 滴水恩情    时间: 2023-4-10 12:41
标题: Spring入门系列:浅析知识点
前言

讲解Spring之前,我们首先梳理下Spring有哪些知识点可以进行入手源码分析,比如:
Hello World

通过这些知识点,后续我们慢慢在深入Spring的使用及原理剖析,为了更好地理解Spring,我们需要先了解一个最简单的示例——Hello World。在学习任何框架和语言之前,Hello World都是必不可少的。
  1. //在以前大家都是spring.xml进行注入bean后供Spring框架解析
  2. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
  3. UserService userService = (UserService) context.getBean("userService");
  4. userService.test();
复制代码
spring.xml中的内容为:
  1. [/code]如果对上面的代码或者xml形式很陌生,再看下面一种代码,也是目前流行的一种形式
  2. [code]//通过我们的配置类进行注入bean并解析
  3. AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MySpringConfig.class);
  4. //ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
  5. UserService userService = (UserService) context.getBean("userService");
  6. userService.test()
复制代码
MySpringConfig中的内容为:
  1. @ComponentScan("com.xiaoyu")
  2. public class MySpringConfig {
  3.         @Bean
  4.         public UserService userService(){
  5.                 return new UserService();
  6.         }
  7. }
复制代码
相信很多人都会对上面的代码不陌生,那我们来看下这三行代码都做了那些工作:
虽然我们目前很少直接使用这种方式来使用Spring,而是使用Spring MVC或者Spring Boot,但是它们都是基于上面这种方式的,都需要在内部去创建一个
ApplicationContext的,只不过:
下面我们将重点讲解Spring对bean的创建,也就是大家常说的Bean的生命周期。虽然我们只是入门级别的学习,但我们仍将深入探讨流程,但不会涉及到具体的源码分析。在后续的源码分析系列中,我们将着重分析每一个知识点。
Bean的创建过程

那么,Spring是如何创建一个Bean的呢?这就是Bean的生命周期。其大体过程如下:
通过以上步骤,我们可以了解到创建的对象可能存在两种结果。如果不需要AOP,Bean就是通过构造方法创建的对象;如果需要AOP,Bean就是代理类所实例化得到的对象,而不是构造方法所得到的对象。
Bean创建后:
构造器的初始化

在Spring中,每个对象都会有默认的构造器。但是在实际业务中,有时候会存在多个构造器的情况。那么,Spring如何去选择使用哪个构造器去创建对象呢?
Spring的判断逻辑如下:
Spring的设计思想是这样的:
综上所述,Spring会根据Bean的构造器情况进行选择,如果需要人工干预,可以使用@Autowired注解修饰。
AOP的大致流程

在创建对象时,Spring会判断当前对象是否需要进行AOP代理。为了确定当前Bean对象是否需要代理,大致流程如下:
具体流程如下:
Spring事务

一谈到事务,大家首先想到的肯定是@Transaction注解,而这种注解也会被Spring创建对象时检测到,然后会生成代理对象,这种方式其实工作中用到的也特别多,用起来也特别爽,那我们也大概讲下事务的逻辑处理吧,其大致流程如下:
以上是简单的事务处理流程,深入细节会涉及到Spring的事务传播级别,如果现在说的话,会陷入不必要的思考,自此我们的 [Spring入门系列] 也结篇了,在接下来的 [Spring源码系列] 中,我将更加详细地讲解这些内容。
「准备开车,可坐稳了别被摔下来」
先对这些流程有个印象,并带着疑惑来进一步探究Spring的内部机制,好了,今天就讲到这里,我是小雨,我们下期再见。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4