Spring底层核心原理解析

  1. Bean的生命周期底层原理
  2. 依赖注入底层原理
  3. 初始化底层原理
  4. 推断构造方法底层原理
  5. AOP底层原理
  6. Spring事务底层原理

先来看看入门使用Spring的代码:

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
UserService userService = (UserService) context.getBean("userService");
userService.test();

对于这三行代码应该,大部分同学应该都是比较熟悉,这是学习Spring的hello world。可是,这三行代码底层都做了什么,比如:

  1. 第一行代码,会构造一个ClassPathXmlApplicationContext对象,ClassPathXmlApplicationContext该如何理解,调用该构造方法除开会实例化得到一个对象,还会做哪些事情?
  2. 第二行代码,会调用ClassPathXmlApplicationContext的getBean方法,会得到一个UserService对象,getBean()是如何实现的?返回的UserService对象和我们自己直接new的UserService对象有区别吗?
  3. 第三行代码,就是简单的调用UserService的test()方法,不难理解。

光看这三行代码,其实并不能体现出来Spring的强大之处,也不能理解为什么需要ClassPathXmlApplicationContext和getBean()方法,随着课程的深入将会改变你此时的观念,而对于上面的这些疑问,也会随着课程深入逐步得到解决。对于这三行代码,你现在可以认为:如果你要用Spring,你就得这么写。就像你要用Mybatis,你就得写各种Mapper接口。

但是用ClassPathXmlApplicationContext其实已经过时了,在新版的Spring MVC和Spring Boot的底层主要用的都是AnnotationConfigApplicationContext,比如:

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
//ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
UserService userService = (UserService) context.getBean("userService");
userService.test();

可以看到AnnotationConfigApplicationC

相关推荐

  1. Spring底层核心理解

    2024-03-18 07:32:01       31 阅读
  2. Spring底层核心理解

    2024-03-18 07:32:01       21 阅读
  3. Spring底层核心理解

    2024-03-18 07:32:01       19 阅读
  4. Spring底层核心理解

    2024-03-18 07:32:01       11 阅读
  5. Spring MVC PathVariableMethodArgumentResolver理解

    2024-03-18 07:32:01       25 阅读
  6. Spring MVC HandlerMethodArgumentResolver理解

    2024-03-18 07:32:01       25 阅读
  7. Spring MVC HandlerMethodReturnValueHandler理解

    2024-03-18 07:32:01       28 阅读
  8. Spring MVC RequestParamMethodArgumentResolver理解

    2024-03-18 07:32:01       27 阅读

最近更新

  1. electron通信与持久化存储

    2024-03-18 07:32:01       0 阅读
  2. Electron Forge 打包更改打包后图片

    2024-03-18 07:32:01       0 阅读
  3. 【ES】--Elasticsearch的高亮模式

    2024-03-18 07:32:01       0 阅读
  4. JVM专题九:JVM分代知识点梳理

    2024-03-18 07:32:01       0 阅读
  5. 谈谈检测浏览器类型

    2024-03-18 07:32:01       0 阅读
  6. npm 常用命令详解与实践

    2024-03-18 07:32:01       0 阅读
  7. node.js 面试题 1

    2024-03-18 07:32:01       0 阅读
  8. Eureka应用场景和优势

    2024-03-18 07:32:01       1 阅读

热门阅读

  1. 清理ubuntu空间

    2024-03-18 07:32:01       22 阅读
  2. ubuntu(jammy)安装docker步骤

    2024-03-18 07:32:01       21 阅读
  3. A Decade’s Battle on Dataset Bias: Are We There Yet

    2024-03-18 07:32:01       19 阅读
  4. Llama 2: 深入探讨ChatGPT的开源挑战者

    2024-03-18 07:32:01       23 阅读
  5. Spring Cloud - Eureka版-学习理解

    2024-03-18 07:32:01       20 阅读
  6. vue2和vue3的区别

    2024-03-18 07:32:01       20 阅读
  7. SpringMVC总结二

    2024-03-18 07:32:01       24 阅读