概述
SpringBoot是啥?
- 原来是一个轻量级的IOC容器后来扩展到安全数据集成等技术体系
SpringBoot核心功能
-
SpringBoot是以Jar包形式启动,之所以是可以以Jar包独立运行,是因为把Servlet容器内嵌到Jar包中,
SpringBoot可以内嵌Tomcat和Jet。Jar包启动只需要依赖JDK的依赖。提供了Starter简化了配置,Starter
是一个启动器,Starter是一个maven的配置。
SpringBoot优点
- 快速构建项目,对主流框架可以无配置快速集成
- 项目还可以独立运行无序外部依赖Servlet容器Tomcat
- 与云计算天然的集成SpringBoot可以独立的以Jar包运行,提供了一个微服务执行标准
与SpringMVC开发区别
配置POM
SpringBoot程序入口
SpringBoot提供maven插件
添加运维监控Actuator
运维监控信息
Spring Boot2.0启动依赖和自动装配
SpringBoot启动依赖
SpringBoot 核心API
- SpringBootConfiguration支持Java配置类
- EnableAutoConfiguration 开启自动装配功能
- ComponentScan扫描Bean组件
自动装配 AutoConfigurationImportSelector
返回的String[] 数组的名字作为Bean去加载
@Override
public String[] selectImports(AnnotationMetadata annotationMetadata) {
if (!isEnabled(annotationMetadata)) {
return NO_IMPORTS;
}
AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader
.loadMetadata(this.beanClassLoader);
AnnotationAttributes attributes = getAttributes(annotationMetadata);
List<String> configurations = getCandidateConfigurations(annotationMetadata,
attributes);
configurations = removeDuplicates(configurations);
Set<String> exclusions = getExclusions(annotationMetadata, attributes);
checkExcludedClasses(configurations, exclusions);
configurations.removeAll(exclusions);
configurations = filter(configurations, autoConfigurationMetadata);
fireAutoConfigurationImportEvents(configurations, exclusions);
return StringUtils.toStringArray(configurations);
}
protected List<String> getCandidateConfigurations(AnnotationMetadata metadata,
AnnotationAttributes attributes) {
List<String> configurations = SpringFactoriesLoader.loadFactoryNames(
getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader());
Assert.notEmpty(configurations,
"No auto configuration classes found in META-INF/spring.factories. If you "
+ "are using a custom packaging, make sure that file is correct.");
return configurations;
}
-
加载spring.factories里面配置文件
具体Bean
常用的AutoConfiguration
常用的条件注解ConditionalXXX
Activiti6.0与Spring Boot2.0集成
升级Activiti6.0 依赖SpringBoot版本为2.0