一丶前言笔记1和笔记2中我们分析了如何根据xml和注解加载生成BeanDefinition,并注册到BeanFactory,接下载便是Bean的加载,在加载之前会进行一些前置准备二丶前置准备 和BeanPostProcessor1.什么是BeanPostProcesser翻译过来是Bean后置处理器,是Spring留给我们的一个扩展接口,定义了两个方法,会被Spring回调,调用的时机和大致流程如            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-15 12:34:52
                            
                                41阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            BeanFactoryPostProcessor:BeanFactory后置处理器,是对BeanDefinition对象进行修改。(BeanDefinition:存储bean标签的信息,用来生成bean实例) BeanPostProcessor:Bean后置处理器,是对生成的Bean对象进行修改。一、BeanFactoryPostProcessor该接口源码如下:public interface            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-16 01:48:17
                            
                                63阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            BeanFactoryPostProcessor 作用BeanFactoryPostProcessor 和该子类 BeanDefinitionRegistryPostProcessor 作用于 BeanDefinition 解析之后,Bean 实例化之前,所以我们可以在 BeanDefinition 定义好了之后做一些修改,从而影响 Bean 的实例化。源码如下BeanFactoryPostPro            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-01 18:23:54
                            
                                72阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在applicationContext的创建中,我们分析了applicationContext的创建过程,在本文中,我们将分析spring是如何进行包扫描的。依旧是AnnotationConfigApplicationContext的构造方法:public AnnotationConfigApplicationContext(String... basePackages) {
    this()            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-08 10:00:31
                            
                                53阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            作为Java的开发者Spring可以称之为神一样的存在框架,好处太多无法用言语表达只能称之为Java排名的number one 框架。我们使用Spring它帮助我们实例化了很多Bean对象,但是这些Bean是怎样加载到Spring容器中的呢?相信很多人都不知道。现在就讲一下,还是以Spring Boot项目作为例子来讲,因为它的底层还是Spring。Spring扫描类主要是依赖这个注解:@Comp            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-06 06:45:55
                            
                                35阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在上篇文章Spring IoC 源码分析 (基于注解) 一我们分析到,我们通过AnnotationConfigApplicationContext类传入一个包路径启动Spring之后,会首先初始化包扫描的过滤规则。那我们今天就来看下包扫描的具体过程。还是先看下面的代码:AnnotationConfigApplicationContext类//该构造函数会自动扫描以给定的包及其子包下的所有类,并自动            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-28 03:23:20
                            
                                329阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             BeanFactoryPostProcessor顾名思义bean工厂的后置处理器,它主要是对bean工厂做一些操作,他可以利用其中的postProcessBeanFactory方法对beanfactory做一些操作,同时他有一个比较厉害的实现类BeanDefinitionRegistryPostProcessor,这个抽象类继承了BeanfactoryPostProcessor,同时多定义了一个            
                
         
            
            
            
            先回顾下spring高级容器中最重要的方法refresh:先构建一个DefaultListableBeanFactory            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-11-11 12:21:52
                            
                                128阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            BeanPostProcessor 和 BeanFactoryPostProcessor            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                            精选
                                                        
                            2024-02-28 00:07:27
                            
                                170阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            AbstractApplicationContext.refresh@Overridepublic void refresh() throws BeansException, IllegalStateException {	synchronized (             
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-02-18 09:56:14
                            
                                213阅读
                            
                                                                             
                 
                
                             
         
            
            
            
                    最近在学spring源码, 其实我刚开始使用spring的时候就有过思考, 为什么我加了@Component, @Controller, @service 等注解, 就会被扫描到(还要指定扫描包)注入到容器中. 这里不详细讲过程, 详细讲讲我学习的方法.        首先去spring.io下载源码,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-23 21:32:44
                            
                                27阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            2、SpringBoot的默认扫描包机制个人理解、仅供参考。2.1、@SpringBootApplication先从主启动类来说@SpringBootApplication
public class springBootHelloWorld {
    public static void main(String[] args) {
        SpringApplication.run(sp            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-26 12:50:09
                            
                                915阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Spring Boot的ComponentScan原理@ComponentScan
如果你了解组件扫描,你就会理解Spring。Spring是一个依赖注入框架。它完全是关于依赖的bean和wiring。定义Spring Beans的第一步是添加正确的注释 - @Component或@Service或@Repository。但是,Spring不知道bean在哪个包下面,除非你告诉它去哪里搜索包。这部            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-12 11:43:10
                            
                                38阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录@ComponentScan包扫描配置文件方式配置文件配置类测试类实验效果不添加包扫描的效果添加包扫描的效果注解方式配置类(主启动类)包扫描获得的其他组件测试类实验结果@ComponentScan注解解析value属性includeFilters属性禁用默认过滤规则前禁用默认规则后excludeFilters属性默认包含所有组件选择过滤类型选择过滤方式自定义过滤规则TypeFilter自            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-20 06:59:40
                            
                                341阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
              听到扫描包,是不是感觉有点熟悉,没错就是你心中想的那样,给我一个包路径,我就将这个包的所有类包装成beanDefinition.你想一下,在早期,spring刚出来的时候,如果你有100个类,那么想把它变成beandefinition,你是不是要在xml里面定义100个bean标签的,如果是1000个呢,那是不是写1000个bean标签,是不是手都写麻了,看得也麻了,头也大了吧。所以            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-25 07:41:49
                            
                                76阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            做工程时,有时候需要扫描指定包,或者指定jar包,甚至扫描指定包下指定类,本文章详细讲解如何扫描,以及智能扫描,小编讲的很详细了仔细看。以下讲解, 包扫描和jar包扫描,自动识别包扫描还是jar包扫描。//下文需要一个ClassLoader,
private ClassLoader classLoader;
	public PackageParse() {
	}            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-05 14:20:25
                            
                                157阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Spring applicationContext.xml的<context:component-scan>標籤用途比我想像的還要實用。而且後來才知道,有了<context:component-scan>,另一個<context:annotation-config/>標籤根本可以移除掉,因為被包含進去了。原本我survery Spring3通常只配置成<c            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-07 18:49:00
                            
                                29阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            深入解析invokeBeanFactoryPostProcessors方法前面bean的基石beanDefinition简单说了invokeBeanFactoryPostProcessors方法,现在来彻底搞懂这个方法。实现子类BeanDefinitionRegistryPostProcessor的执行时机首先有一个A类,,它实现了BeanDefinitionRegistryPostProcess            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-26 09:09:41
                            
                                27阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             1、Bean后处理器(BeanPostProcessor) Bean后处理器,负责对容器中所有的Bean进行某种特定的修改,从而使这批Bean全部获得某种新功能。 Object postProcessBeforeInitialization(Object bean, String beanName):初始化之前执行。 Object postProcessAfterInitia            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-04 19:00:39
                            
                                25阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Spring默认扫描SpringBootApplication同级包及其子包            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2020-04-14 10:16:47
                            
                                311阅读