为什SpringBoot?
随着技术的发展,JavaEE使用Spring逐渐变得笨重,大量大XML文件的堆积,繁琐的配置,整合第三方框架的配置问题,导致开发和部署效率的降低。
为什么要学习SpringBoot?
首先从官方图来看的话,SpringBoot的 定位是Bulid Anything,Bulid任何东西。Spring boot 可以尽可能快地启动和运行,并且只需要最少的Spring前期配置。
一条重要的概念:约定大于配置。
SpringBoot
SpringBoot 是伴随的Spring 4.0诞生的,SpringBoot继承了原有Spring框架的优秀基因。
- 简化编码
- 我们在搭建一个web项目的时候,不需要在pom文件中添加多个依赖 ,只需要在pom文件中添加一个starter-web依赖即可
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
- 简化配置
- 在对应的类上加对应的注解即可
- 简化部署
- 在spring boot中内嵌了tomcat 只需要把项目打成jar包 ,使用
java -jar xxx.jar
一键式启动项目。另外,也降低对运行环境的基本要求,环境变量中有jdk即可
- 在spring boot中内嵌了tomcat 只需要把项目打成jar包 ,使用
- 简化监控
- 我们可以引入 spring-boot-start-actuator 依赖,直接使用 REST 方式来获取进程的运行期性能参数,从而达到监控的目的,比较方便。但是 Spring Boot 只是个微框架,没有提供相应的服务发现与注册的配套功能,没有外围监控集成方案,没有外围安全管理方案,所以在微服务架构中,还需要 Spring Cloud 来配合一起使用
SpringBoot的搭建
SpringBoot的核心
自动装配
-
@springBootApplication是一个复合注解,@SpringbootConflguration springboot的配置类,@EnableAutoConfiguration 自动配置, @Configuration 包扫描
-
@SpringBootConfiguration,就是一个配置类,@Configuration是底层的核心注解,作用和spring配置文件中往spring容器中注入对象(<bean>),只是springboot封装了Configuration, 叫成了SpringBootConfiguration。
-
@EnableAutoConfiguration是由@AutoConfiguration Package ,@Import({AutoConfigurationImportSelector.class})两个注解组成
-
@AutoConfigurationPackage是由 @Import({Registrar.class})实现的,核心方法是registerBeanDefinitions(),就是为了获取启动类所在的包,为后面扫描组建做准备。
-
@Import({AutoConfigurationImportSelector.class}) 核心类是AutoConfigurationImportSelector。
-
原理:
通过@EnableAutoConfiguration 注解下面@Import注解引入的AutoConfigurationImportSelector这个类,去扫描jar下面的文件,然后条件注解根据当前项目依赖的pom文件以及是否配置了符合这写条件注解的配置来进行装载。