做java开发四年了,很多时候都在想spring究竟是怎么玩转的,当对java有一定深入的理解,我们就需要对spring的源码进行解读,源码的解读过程个人觉得至少要看5遍以上才会不晕车,品读其中的奥妙。 IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创 建、依赖的代码,反转给容器来帮忙实现。 一、Spring 核心            
                
         
            
            
            
            使用spring,我们在web.xml都会配置ContextLoaderListener  <listener>
    <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
  </liste            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-14 17:01:03
                            
                                47阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            整理一下之前Spring的学习笔记,大致有一下几种Spring注入到容器中的方法:1)、配置在xml的方式。2)、开启包扫描@ComponentScan使用@Component,@Service,@Controller,@Repository(其实后三个都继承@Component)注册组件到spring容器里面3)、使用@Bean注入4)、使用@Import快速导入组件@Configuration            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-20 10:42:21
                            
                                46阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            ( 十 ) Spring Bean自动装配
    ( 十 ) Spring Bean自动装配 1、简介      Bean 的装配可以理解为依赖关系注入,Bean 的装配方式也就是 Bean 的依赖注入方式。Spring 容器支持多种装配 Bean 的方式,如基于 XML 的 Bean 装配、基于 Annotation            
                
         
            
            
            
            # Spring Boot 容器启动之后加载 Bean 的实现
在 Spring Boot 中,Bean 是应用程序的核心组件,Spring 容器负责管理这些 Bean 的生命周期。通过 Spring Boot 提供的丰富注解,我们可以很方便地在应用启动时加载和初始化 Bean。接下来,我将带你了解如何在 Spring Boot 容器启动后加载 Bean 的过程。
## 流程概述
为了实现容            
                
         
            
            
            
            Spring是一个IOC容器,只要配置了bean之后在程序的其他地方可以自动注入实例,现在使用最多是注解配置,那么配置的那些 @Configuration、@EnableAutoConfiguration等注解是如何工作的呢?Spring是通过BeanFactory保存Bean的配置,那么BeanFactory如何创建?SpringApplication启动时在其run方法中会创建一个Applic            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-27 15:23:14
                            
                                53阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Spring Boot启动时未启动Spring容器进行加载
Spring Boot是一个用于创建独立的、生产级的Spring应用程序的框架。它简化了Spring应用程序的开发过程,提供了自动配置、快速开发和便捷部署等特性。在Spring Boot应用程序启动时,通常会自动加载并初始化Spring容器,以便在运行时管理和调度应用程序的各个组件。然而,有些情况下我们可能需要在启动时暂时禁用Spr            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-12-01 08:29:12
                            
                                165阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            springboot的启动原理和流程本文基于springboot 2.2.13版本目录一、springboot启动的原理二、springboot的启动流程2.1 创建一个SpringApplication对象2.1.1 应用类型推断2.1.2 创建初始化器2.1.3 创建事件监听器2.1.4 主类推断2.2 执行SpringApplication对象的run方法2.2.1 创建事件发布器2.2.2            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-23 13:07:54
                            
                                186阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、web容器的加载 首先我们要先知道一个web项目的启动过程。将Web项目部署到Tomcat中的方法之一,是部署没有封装到WAR文件中的Web项目。要使用这一方法部署未打包的webapp目录,只要把我们的项目(编译好的发布项目,非开发项目)放到Tomcat的webapps目录下就可以了。一个常规的Spring应用,在web容器启动时,默认会先去加载/WEB-INF/web.xml,它配置了:se            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-06 13:21:29
                            
                                65阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            SpringApplication run调用SpringApplication.run启动springboot应用1 SpringApplication.run(Application.class, args);2:使用自定义SpringApplication进行启动public static ConfigurableApplicationContext run(Class<?>[]            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-05 07:58:45
                            
                                160阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在Web项目中当Web容器启动时我们要同时启动Spring容器,有三种办法,第一种使用监听器启动,第二使用Servlet启动,第三使用MVC框架的扩展点启动,这里主要选择第一种,因为监听器的启动时机早于Servlet。强烈建议使用办法一。1.1、使用监听器启动Spring容器我们需要使用到Spring定义好的一个监听器:org.springframework.web.context.Context            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-25 12:17:48
                            
                                103阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.加载beanDefinition的过程 接上篇,这里开始分析spring容器加载过程中的beanDefinition加载的过程。下面我们就重点分析下面这行代码:ConfigurableListableBeanFactory beanFactory = this.obtainFreshBeanFactory();protected ConfigurableListableBeanFac            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-25 12:58:20
                            
                                16阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Tomcat的启动 Tomcat的基本结构Tomcat容器分为四个等级,Engine--Host--Servlet—Context(一个Context对应一个web工程)一个 Context 对应一个 Web 工程,所以我们在Tomcat根目录的webapps文件夹路径下面经常会看到除了我们自己部署的web,还有若干其他Tomcat自带的web,不同的web工程都会对应在Tomcat里面的cont            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-24 21:25:16
                            
                                21阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在spring中,那些组成应用程序主体 及springIOC容器所管理的对象,被称之为 bean,简单的讲,bean就是由spring容器初始化,装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。而bean定位以及bean相互间的依赖关系将通过配置元数据来进行描述。容器org.springframework.beans.factory.BeanFactory 是Sprin            
                
         
            
            
            
            问题的产生:Java项目打包部署,服务启动时出错,服务无法正常启动。查看启动日志,错误是 xml解析失败,无法找到xml元素的声明。具体报错日志如下:INFO: Loading XML bean definitions from class path resource [applicationContext-task.xml]
org.xml.sax.SAXParseException; line            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-16 08:46:50
                            
                                124阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            ( 七 ) SpringBoot 配置的加载
    ( 七 ) SpringBoot 配置的加载   1、简介     通常情况下,Spring Boot 在启动时会将 resources 目录下的 application.properties 或 apllication.yml 作为其默认配置文件,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-12 06:30:28
                            
                                367阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            初窥spring源码 spring容器加载核心方法refresh()流程图 当你想找对象的时候,你首先在心里要对你要找的对象有一个大概的标准,然后照着这个标准去找,我们看源码也是一样,不能拿着源码包后就随便点,需要一个场景,一个目标。 1.创建一个maven项目,加入spring依赖 2.创建一个b ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-07-25 20:32:00
                            
                                256阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            提到Bean的加载,就不得不提一下依赖注入的问题。 Spring提供4中依赖注入的方法:set注入,构造器注入,静态工厂注入,实例工厂注入。 现有实体类Dog,有1个String属性dogName,还是有setter和getter方法,空参构造器和有参构造器,类的结构如下:public class Dog {
    private String dogName;
    public void            
                
         
            
            
            
            Spring提供了两种不同的Bean容器,第一种是Bean工厂,由beanFactory接口定义,是最简单的容器,提供基础的依赖注入支持;第二种是应用上下文,由ApplicationContext接口定义,建立在bean工厂之上,提供系统框架服务。所谓装配Bean,是指告诉Spring容器需要哪些Bean以及容器如何使用以来注入将他们组合在一起。一、Bean容器SpringIOC设计的核心是Bea            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-06 14:00:52
                            
                                48阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前言:springboot已经为我们实现了抽象的api接口,因此当我们使用不同的缓存时,只是配置有可能有点区别(比如ehcache和Redis),但是在程序中使用缓存的方法是一样的。 1.springboot使用ehcache缓存1.步骤:   1.在pom.xml中配置2个依赖,添加spring-boot-starter-cache启动器,以及ehcache。<!-- ehcac            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-05 19:09:35
                            
                                341阅读