Spring Boot 笔记

springBoot 注解示意图:

复制代码
@SpringBootApplication
    →@EnableAutoConfiguration
    →导入组件类@Import({AutoConfigurationImportSelector.class})
    →调用方法 selectImports()
    →1.找文件 spring-boot-autoconfigure/MEETA-INF/spring.factories
    →2.在文件中查找 EnableAutoConfiguration为key的集合,根据maven依赖导入jar包来筛选配置类

ImportSelector 导入组件

定义一个组件

java 复制代码
//1.Import 注解导入组件    UserConfig
@Configuration
@Import(People.class)
public class UserConfig{
}

//2. 实现 ImportSleector 重写 slctImports
public class People implements ImportSleector{
    @Override
    public String[] slctImports(AnnotationMtadata annotationMtadata ){
        // 自动注入的server  
        return new String[]{com.csdn.service.HrmSrviceImpl}
    }
}
//3.controller

public class UserController{

    //自动注入
    @Autowired
    private HrmSrviceImpl hrmSrviceImpl;

    pulbic String getUserAll(){
        hrmSrviceImpl.tstSeervice();
        return "index";
    }

}

//3.1 HrmSrviceImpl .tstSeervice
public class HrmSrviceImpl{
    public void tstSeervice(){
        //
    }
} 

ImportBeanDefinitionRegistrar 导入组件

java 复制代码
//1. 实现 ImportBeanDefinitionRegistrar 
public class UserDefinitionRegistrar implements ImportBeanDefinitionRegistrar{
    @Override
    public void registerBeanDefinitions(***){
        //***
    }
}



// 2. import 注解导入

@Configuration
@Import(UserDefinitionRegistrar .class)
public class People {
    
}

Condition 导入组件

java 复制代码
//1.@ Conditional 条件注解 实现 Condition  导入bean 条件判断

public class TestCondition implements Condition{
    @Override
    public boolean matches(){
    
        if(ctx.geetBeanrFactory().containsBean("user")){
            retrun true;
        }else{
            retrun false;
        }
    }
}

生命周期

复制代码
----------正在对容器进行处理----容器后处理器-------------------
------初始化之前执行后处理postProcessBeforeInitialization----
------初始化之后执行后处理postProcessAfterInitialization----
--------调用了有参构造器------
-------BeanNameAware--setBeanName--------
---------setApplicationContext--------
------初始化之前执行后处理postProcessBeforeInitialization---
------InitializingBean---afterPropertiesSet初始化-------
---------init-模拟初始化方法-------
------初始化之后执行后处理postProcessAfterInitialization----
-----------创建spring 容器创建完成--------------

------DisposableBean---destroy销毁时执行的方法-------
---------close模拟销毁spring容器方法-------
相关推荐
code_slave(码畜)10 小时前
微服务架构落地:基础服务 —— 报表服务(中篇:元数据、查询引擎、缓存与权限落地)
spring boot·spring cloud·缓存·微服务·架构
ZealSinger11 小时前
Boot4挂起函数丢traceId怎么修
spring boot·kotlin·协程·可观测性
code_slave(码畜)11 小时前
微服务架构落地:基础服务 —— 报表服务(AI 集成篇:AI 增强报表能力)
人工智能·spring boot·spring cloud·微服务·架构
code_slave(码畜)12 小时前
微服务架构落地:公共中间件层总览——不承载业务,只承载稳定性
spring boot·spring cloud·微服务·中间件·架构
谢亮_vipxieliang13 小时前
Spring Boot 自动配置原理:从 @SpringBootApplication 到自定义 Starter
java·spring boot·后端
AI人工智能+电脑小能手15 小时前
Java 企业级工具类全家桶-68-HTTP请求工具类
spring boot·网络请求·http请求·resttemplate·jdk 17·java工具类·企业级开发
paopaokaka_luck17 小时前
非遗文物数字化小程序(AI非遗问答、ONNX图像识别、协同过滤推荐、ECharts数据分析、非遗知识浏览与互动、文创商城订单闭环、文化活动报名签到、社区交流)
javascript·spring boot·mysql·数据分析·echarts·mybatis
EatFan19 小时前
Spring Boot 4 迁移避坑清单:Jackson 3、starter 拆分与最低 JDK 口径核对(含若依/芋道/CRMEB 升级对照)
java·数据库·spring boot·spring boot 4·java 21·jakarta ee 11·jackson 3
ly768919 小时前
Spring Boot 集成 Redis 企业级实践:连接池、序列化与缓存穿透雪崩的工程化防御
spring boot·redis·缓存·缓存穿透·布隆过滤器·lettuce 连接池
Wx-bishekaifayuan20 小时前
springboot陨石鉴收系统96265-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·spring·课程设计