Springboot入门-01
微服务阶段
javaSE : OOP
Mysql: 持久化
html+css+js+jquery+框架: 视图、框架不熟练、css不熟练。
javaWeb: 独立开发MVC三层架构网站: 最原始
ssm: 框架,简化了开发流程,配置也变得较为复杂。
war: tomcat运行
spring再简化:SpringBoot- jar: 内嵌Tomcat; 微服务架构开始!
服务越来越多: SpringCloud 管理服务。
MVC三层架构 MVVM 微服务结构
业务: service : UserService: ===> 每个服务都独立成一个模块
Http模式、RPC模式
环境:
-
jdk1.8
-
maven 3.5.3
-
IDEA
自动配置:
pom.xml
-
spring-boot-dependencies: 核心依赖在 父工程中
-
在引入一些依赖时,不需要在指定版本。因为父工程已定义
启动器
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
-
启动器:就是Springboot的启动场景(依赖)
-
spring-boot-starter-web 就会自动导入web环境所需的所有依赖
-
要使用什么功能,只需要导入对应的
starter
启动器就可以。
//@SpringBootApplication : 标注这个类是一个 springboot的应用 @SpringBootApplication public class SpringbootApplication { public static void main(String[] args) { // 将springboot应用启动。主入口 SpringApplication.run(SpringbootApplication.class, args); } }
@SpringBootConfiguration : springboot的配置 @Configuration : spring配置类 @Component: 该类本身就是个组件 @EnableAutoConfiguration: 自动配置 @AutoConfigurationPackage: 自动配置包 @Import(AutoConfigurationPackages.Registrar.class): 自动配置包`注册` @Import(AutoConfigurationImportSelector.class): 自动配置导入选择 // 获取所有的配置 List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);
获取候选的配置
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; }
Properties properties = PropertiesLoaderUtils.loadProperties(resource);
所以资源加载到配置类中
-
Springboot在启动的时候从类路径下 META-INF/spring.factiries中获取 EnableAutoConfiguration指定的值。
-
将这些值指定的自动配置类导入到容器,自动配置类就会生效,前提必须要有对应的starter场景启动器。
帮助我们完成自动配置工作。
-
整个javaEE体系的解决方案和自动配置都在 springboot-autoconfiguration的jar包中。
-
它将所有需要导入的组件以全类名的方式返回。这些组件会被添加到容器中。
-
它会给容器中导入非常多的自动配置类。格式为(xxxxAutoConfiguration),就是给容器中这个场景需要的组件,并自动配置好这些组件。
-