美文网首页
SpringBoot

SpringBoot

作者: 极速魔法 | 来源:发表于2022-03-30 20:57 被阅读0次

    SpringBoot Starter

    • 常用的依赖分组进行整合,整合到一个依赖,一次性添加到项目的Maven构建中。
    • 解决依赖版本冲突问题

    自动配置

    springboot 启动过程中,根据依赖的引入情况,自动将一些配置类 bean创建,添加到 IOC容器中

    热部署

    原理

    类加载采用两种类加载器,第三方jar包采用 base-classolader加载;开发人员的代码用restartClassLoader 加载。

    属性注入

    // 从配置文件中加载配置,实现批量注入,使用set方法.
    // @EnableConfigurationProperties 使 @ConfigurationProperties 生效
    @Configuration
    @EnableConfigurationProperties(JdbcConfiguration.class)
    @ConfigurationProperties(prefix="person")
    class Person {
            private int id;
            private String name;
            ...
    }
    

    /第三方配置/

    @Configuration
    class MyService {
        @Bean
        @ConfigurationProperties(prefix="another")
        public AnotherComponent anotherComponent() {
            return new AnotherComponent
        }
    }
    
    class AnotherComponent() {
        private String id;
        private String name;
    }
    

    日志框架

    日志 由日志抽象层 + 日志实现层组合搭建。Spring框架使用JCL作为默认日志输出,Spring boot使用 SLF4J + logback

    日志抽象层

    • JCL(jakarta Common Logging),
    • SLF4J(Simple Logging Facade for Java)
    • jboss logging

    日志实现层

    • jul(java util logging)
    • log4j
    • jogback
    • log4j2

    Spring Boot源码编译

    1. 下载Spring Boot 2.2.9 Release源码
    2. 配置maven和jdk环境 document/Maven.md · lagouedu/Java高薪训练营_基础文档 - Gitee.com。配置Maven 镜像和本地仓库
    3. mvn clean install -DskipTests -Pfast,执行编译
    4. 导入idea中,配置idea中的Maven环境,等待 sync结束
    5. 根pom.xml关闭maven代码检查
    <properties> <revision>2.2.9.RELEASE</revision> <main.basedir>${basedir}</main.basedir> <disable.checks>true</disable.checks> </properties>
    
    1. Spring-boot-2.2.9 RELEASE下新建demo module
    2. 配置 自定义spring boot module版本 2.2.9,根pom.xml中 module引入自定义项目 <module>demo</module>

    刷新应用上下文

    invokeBeanFactoryPostProcessor(beanFactory)

    1. 定位Resource
    • 包扫描,主类所在的包
    • @Import指定的类
    • SPI扩展机制实现的自动装配(各种starter)
    1. 解析成 BeanDefinition
    2. 注册 BeanDefinition
      注册到DefaulutListableBeanFactory 中的beanDefinitionMap中

    缓存

    重要接口

    Cache: 缓存抽象的规范接口
    CacheManager: 缓存管理器,管理Cache的生命周期

    缓存注解

    • @Cacheable,针对方法配置,缓存方法查询结果
    • @CacheEvict ,清空缓存
    • @CachePut, 保证方法被调用,结果又被缓存,一般用于更新操作
    • @EnableCaching,开启基于注解的缓存
    • @CacheConfig, 抽取缓存相关注解的公共配置,可抽取的公共配置有缓存名字、主键生成 器等

    相关文章

      网友评论

          本文标题:SpringBoot

          本文链接:https://www.haomeiwen.com/subject/thbwjrtx.html