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源码编译
- 下载Spring Boot 2.2.9 Release源码
- 配置maven和jdk环境 document/Maven.md · lagouedu/Java高薪训练营_基础文档 - Gitee.com。配置Maven 镜像和本地仓库
-
mvn clean install -DskipTests -Pfast
,执行编译 - 导入idea中,配置idea中的Maven环境,等待 sync结束
- 根pom.xml关闭maven代码检查
<properties> <revision>2.2.9.RELEASE</revision> <main.basedir>${basedir}</main.basedir> <disable.checks>true</disable.checks> </properties>
- Spring-boot-2.2.9 RELEASE下新建demo module
- 配置 自定义spring boot module版本 2.2.9,根pom.xml中 module引入自定义项目
<module>demo</module>
刷新应用上下文
invokeBeanFactoryPostProcessor(beanFactory)
- 定位Resource
- 包扫描,主类所在的包
- @Import指定的类
- SPI扩展机制实现的自动装配(各种starter)
- 解析成 BeanDefinition
- 注册 BeanDefinition
注册到DefaulutListableBeanFactory 中的beanDefinitionMap中
缓存
重要接口
Cache: 缓存抽象的规范接口
CacheManager: 缓存管理器,管理Cache的生命周期
缓存注解
- @Cacheable,针对方法配置,缓存方法查询结果
- @CacheEvict ,清空缓存
- @CachePut, 保证方法被调用,结果又被缓存,一般用于更新操作
- @EnableCaching,开启基于注解的缓存
- @CacheConfig, 抽取缓存相关注解的公共配置,可抽取的公共配置有缓存名字、主键生成 器等
网友评论