1.什么是SpringBoot?
对于spring框架,我们接触得比较多的应该是spring mvc、和spring。而spring的核心在于IOC(控制反转对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系)和DI(依赖注入IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道)。而这些框架在使用的过程中会需要配置大量的xml,或者需要做很多繁琐的配置。
springboot框架是为了能够帮助使用spring框架的开发者快速高效的构建一个基于spirng框架以及spring生态体系的应用解决方案。它是对“约定优于配置”这个理念下的一个最佳实践。因此它是一个服务于框架的框架,服务的范围是简化配置文件。
2.初步认识Spring Boot
我们可以使用 https://start.spring.io
@SpringBootApplication
public class SpringBootStudyApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootStudyApplication.class, args);
}
}
为了让大家看到效果,我们使用spring mvc来构建一个web应用,而springboot帮我们简化了非常多的逻辑使得我们非常容易去构建一个web项目。
springboot提供了spring-boot-starter-web自动装配模块
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
1234
在当前项目下运行mvn spring-boot:run 或者直接运行main方法就可以启动一个使用了嵌入式tomcat服务请求的web应用,但是我们没有提供任何服务web请求的controller,所以访问任何路径都会返回一个springboot默认的错误页面(whitelabel error page)
所以,我们可以创建一个Controller来实现请求
@RestController
public class HelloController {
@GetMapping("/say")
public String sayHello(){
return "hello Mic";
}
}
访问http://localhost:8080/say 就可以获得一个请求结果。 这样就完成了一个非常简单的web应用。 springboot是一个约定优于配置的产物,所以在快速构建web应用的背后,其实有很多的约定。
- 项目结构层面,静态文件和页面模版的存放位置变成了src/main/resources对应的子目录下
- 自动嵌入tomcat作为web容器对外提供http服务,默认使用8080端口监听
- 自动装配springmvc必要的组件
3.Spring Boot四大核心
EnableAutoConfiguration 自动装配
Starter组件, 开箱即用
Actuator 监控
Spring Boot Cli 为Spring Cloud 提供了Spring Boot 命令行功能
那今天主要给大家讲讲Enable*这个注解
4.Enable* 注解的作用
Enable是启用的意思,相当于开启某一个功能
- EnableScheduling
- EnableHystrix
- EnableAsync
- EnableAutoConfiguration
- EnableWebMvc
仍然是在spring3.1版本中,提供了一系列的@Enable开头的注解,Enable主机应该是在JavaConfig框架上更进一步的完善,是的用户在使用spring相关的框架是,避免配置大量的代码从而降低使用的难度
比如常见的一些Enable注解:EnableWebMvc,(这个注解引入了MVC框架在Spring 应用中需要用到的所有bean);
比如说@EnableScheduling,开启计划任务的支持;
找到EnableAutoConfiguration,我们可以看到每一个涉及到Enable开头的注解,都会带有一个@Import的注解。
5.深入分析Spring Boot中的自动装配
在Spring Boot中,不得不说的一个点是自动装配,它是starter的基础,也是Spring Boot的核心, 那什么叫自动装配?或者什么叫装配呢?
回顾一下Spring Framework,它最核心的功能是IOC和AOP, IoC容器的主要功能是可以管理对象的生命周期。也就是bean的管理。我们把Bean对象托管到Spring Ioc容器的这个过程称为装配,那什么是自动装配呢?我们慢慢来介绍
首先大家看下这张图,我们先不解释。等把今天的内容讲完,我们再回头来通过这张图来总结