框架底层原理
文章平均质量分 89
Spring Boot 是基于 Spring 框架的一个子项目,旨在简化 Spring 应用的开发过程。它通过自动配置、嵌入式服务器和一套适当的默认设置来减少开发者的工作量。了解 Spring Boot 的底层原理可以帮助开发者更好地利用其特性和功能。
朱道阳
永恒水手月亮
展开
-
SpringBoot 启动流程六
SpringBoot启动流程六这句话是创建一个上下文对象就是最终返回的那个上下文我们这个creatApplicationContext方法是调用的这个方法传入一个类型我们通过打断点的方式就可以看到context里面的东西加载容器对象当我们把依赖改成starter-web时这个容器对象会进行改变所以说这句话就是创建容器对象根据前期配置的容器类型进行判定并且创建接下来我们设置一下上下文容器的启动模式setApplicationSt原创 2024-07-05 13:16:36 · 728 阅读 · 0 评论 -
SpringBoot 启动流程五
我们进入这个方法是拿到了一系列的监听器一系列可运行的监听器下面好多代码都调用的监听器比如说这个用监听器去调用starting方法、这里面做的是全是执行监听器的动作这些name都是springboot的监听流程的名称这些都是监听器执行了对应的操作步骤但凡是传入listener对象进入某个方法的这个方法肯定是用这个监听器对象去干一些事情的接下来是这个方法获取到的是args命令行参数接下来初始化环境信息这里是把环境转化成了一个对象我们是调用这个方法初始化了一堆东西。原创 2024-07-05 13:07:05 · 712 阅读 · 0 评论 -
SpringBoot 启动流程四
前面这个创建对象是初始化SpringApplication对象是加载了SpringBoot程序的所有相关配置我们接下来要将这个run方法run过程是一个运行初始化容器我们看我们的运行结果是得到一个ConfigurableApplicationContext对象其实这个就是一个容器的上下文对象所以我们初始化容器就是为了得到一个ConfigurableApplicationContext对象就是这一串代码 具体干的事情前面这一块做了各种初始化工作初始化了一个计时器 开始计时。原创 2024-07-05 11:15:45 · 549 阅读 · 0 评论 -
SpringBoot 启动流程二
把传入的参数初始化为一个成员变量我们这样做是为了让这个resourceLoader资源加载器由一个参数 一个局部变量 升级成为一个成员变量让这个SpringApplication类的其他方法也能使用这就是扩大应用范围Assert是断言的意思这里是做逻辑判断做一个信息判断primarySource看一下传入的初始信息是不是为空这只是在内部进行了一个判定原创 2024-07-04 22:04:08 · 764 阅读 · 0 评论 -
SpringBoot 启动流程一
primarySource是指这个类如果一个接口有四个实现类但是你想设置某一个实现类为主体加载的你就可以加上@Primary注解这样这个实现类就是在自动转配中被加载的bean原创 2024-07-04 21:59:25 · 949 阅读 · 0 评论 -
Spring底层原理之bean的加载方式八 BeanDefinitionRegistryPostProcessor注解
在Spring框架中,Bean的底层数据结构通常是使用HashMap或ConcurrentHashMap来存储的。具体来说,Spring使用一个名为BeanFactory的接口来管理Bean,其默认实现是DefaultListableBeanFactory,它内部使用一个ConcurrentHashMap来存储所有的Bean实例,以及它们的相关信息。这种设计使得Spring能够高效地管理大量的Bean,并且支持并发访问。通过HashMap或ConcurrentHashMap,Spring能够根据Bean原创 2024-06-30 11:01:31 · 719 阅读 · 0 评论 -
Spring底层原理之bean的加载方式七 ImportBeanDefinitionRegistrar接口
ImportBeanDefinitionRegistrar 接口是 Spring Framework 提供的一个扩展接口,用于动态注册 bean definitions 到 Spring 的容器中。它允许开发人员根据特定的条件或逻辑在运行时注册额外的 bean definitions,从而扩展 Spring 应用程序的灵活性和功能。主要作用和用途:动态注册 Bean Definitions:通过实现 ImportBeanDefinitionRegistrar 接口,可以在应用程序启动时根据需要动态原创 2024-06-27 21:46:26 · 1139 阅读 · 0 评论 -
Spring底层原理之bean的加载方式六 实现ImportSelector接口
重写方法 后直接把要加载的bean放到字符串数组里返回。这个方法可以做一些动态的bean的加载。接口为 ImportSelector。之后拿到配置类6里面的所有bean。这种方式在实际开发中不常见。那为什么我们要折腾一大圈呢。涉及到一个概念 叫 元注解。作为bean加载进配置类。但是在框架内部大量使用。这样加载后就能创建对象。我们这个对象有很多方法。是用接口的方式实现的。我们写一个Main类。在框架底层是填充作用。原创 2024-06-27 21:42:54 · 830 阅读 · 0 评论 -
Spring底层原理之bean的加载方式五 用上下文对象调用方法手工加载bean
这种方式在实际开发中不常用我们之前提到的我们通过一个上下文对象去接收配置类是通过传一个类加载器进来。在Spring框架中,通常我们通过配置文件(如XML配置文件或者基于Java的配置类)来定义和装配Bean,并让Spring容器自动管理它们的生命周期。然而,有时候我们可能需要在代码中手动加载和管理Bean,这种情况下可以使用上下文对象来调用方法来手动加载Bean。假设我们有一个Spring的ApplicationContext对象,可以通过以下步骤手动加载Bean:原创 2024-06-27 21:38:06 · 394 阅读 · 0 评论 -
Spring底层原理之bean的加载方式四 @import 注解
spring倡导无入侵式编程理念Spring 框架倡导的无入侵式编程理念指的是,在使用 Spring 框架开发应用程序时,你的业务逻辑代码不需要依赖于 Spring 特定的类或接口,也不需要继承 Spring 的特定类。换句话说,你可以在不改变代码结构的情况下,将 Spring 框架集成到现有的应用中,并且可以很容易地移植到其他环境中,而不会受到 Spring 框架的限制或影响。具体来说,Spring 框架通过依赖注入(Dependency Injection)和面向切面编程(Aspect-Orie原创 2024-06-27 21:34:47 · 939 阅读 · 0 评论 -
Spring底层原理之proxyBeanMenthod实例 动态代理 反射 Bean的拦截
默认行为默认情况下,Spring会对@Configuration类进行CGLIB代理,以确保@Bean方法的调用可以被拦截,从而管理@Bean方法返回的实例的生命周期和依赖关系。proxyBeanMethods选项:这是Spring Boot 2.2版本引入的默认值。表示Spring会对@Configuration类进行代理,以支持方法调用的拦截和依赖管理。:这个选项告诉Spring不要对@Configuration类进行代理。原创 2024-06-26 13:58:56 · 1377 阅读 · 0 评论 -
Spring底层原理之FactoryBean Bean工厂 单例对象 多例对象
在 Spring Framework 中,FactoryBean 是一个用于创建其他 Bean 实例的特殊工厂 Bean。它允许开发者自定义 Bean 的创建逻辑,从而更加灵活地管理和配置 Bean 的实例化过程。FactoryBean 接口FactoryBean 接口是 Spring 框架中的一个重要接口,它定义了两个方法:getObject():这个方法负责返回由工厂创建的 Bean 的实例,可以是任意的对象,不限于特定的类或接口。getObjectType():这个方法返回由工厂创建的原创 2024-06-25 16:26:32 · 1247 阅读 · 0 评论 -
Spring底层原理之bean的加载方式三 用注解声明配置类 以及@Configuration 和 @Component 的区别
@Configuration@Configuration是 Spring Framework 中的一个注解,它用于指示该类是一个配置类,它的作用类似于传统的 XML 配置文件。具体来说,它的主要功能有以下几点:定义配置类:使用 @Configuration 注解的类可以提供 bean 的定义和其他 Spring 配置的定义。声明 Bean:在配置类中,可以使用 @Bean 注解声明 bean。这些 bean 将由 Spring 容器管理,并可以在应用程序中通过依赖注入来使用。替代 XML 配置原创 2024-06-25 16:22:05 · 997 阅读 · 0 评论 -
Spring底层原理之bean的加载方式二 用XML+注解方式声明bean 使用@Component @Service @Repository 和 @Bean
关于xml里定义bean 太复杂了。bean的加载方式二 注解关于xml里定义bean 太复杂了我们要选择通过注解配置bean原创 2024-06-24 15:06:12 · 1074 阅读 · 0 评论 -
Spring底层原理之bean的加载方式一 用XML方式声明bean 自定义bean及加载第三方bean 2024详解
我们现在声明的bean都是自己手写的。使用 XML 方式声明 Spring Bean 是 Spring 框架的一种传统配置方式。这种方法通过在 XML 文件中定义 bean 及其依赖关系,来组装应用程序的各个组件。以下是详细介绍如何使用 XML 方式声明 bean原创 2024-06-24 11:48:55 · 668 阅读 · 0 评论