什么是SpringBoot?
Spring Boot 是由 Pivotal 团队提供的基于 Spring 的全新框架,旨在简化 Spring 应用的初始搭建和开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 约定大于(优于)配置
SpringBoot的run方法做了什么事?
run方法其实就是做了一个IOC初始化的操作
@ComponentScan注解是干什么的?
被@ComponentScan修饰的java类,如果没有指定具体的扫描路径。实际上他默认的扫描路径是当前JAVA类所在的路径及其子路径,都是被扫描的范围。
@EnableAutoConfiguration注解是干什么的?
@EnableAutoConfiguration 开启自动配置 开启自动装配
Import注解的三种使用用法
1.静态注入的方式
2.实现了我们的ImportSelector接口,并且实现了selectImports方法,那么我们的返回值就是selectImports的方法的返回类型。
3.实现了ImportBeanDefinitionRegistrar接口,并且实现了registerBeanDefinitions方法。那么这个时候我们可以自行封装BeanDefinition
SpringBoot自动装配的核心配置文件有哪些?
META-INF/spring.factories 候选
META-INF/spring-autoconfigure-metadata.properties 过滤
SpringBoot自动装配的流程是怎样的?
首先,咱们的SpringBoot肯定是执行了Main方法中的run方法,而我们的run方法中会做IOC的初始化,那么我们的SpringBoot显然不会进行配置文件的初始化,而是注解初始化。那么显然我们会将java配置类的类对象传递进去,我们会走到@SpringBootApplication注解,接下来,很显然,起作用的是@EnableAutoConfiguration注解,接下来,这个注解会去加载我们的spring.factories跟spring-autoconfigure-metadata.properties这两个配置文件,进行候选以及筛选的工作,加载进去内存之后,实际上我们会在AutoConfigationImportSelect中加载spring.factories跟spring-autoconfigure-metadata.properties,我们会在返回的时候加载进入容器,这就是自动装配的流程。
bootstrap.yml的意义
SpringBoot中默认支持的属性文件有下面4种
application.properties application.xml
application.yml aplication.yaml
那么为什么还有一类bootstrap.yml bootstrap.properties文件
bootstrap.yml在SpringBoot中默认是不支持的,需要在SpringCloud环境下才支持,作用是在SpringBoot项目启动之前启动的一个父容器,该父容器可以在SpringBoot容器启动之前完成一些加载初始化的操作。比如加载配置中心中的信息。
运行SpringBoot项目的方式
1、 打包用命令或者者放到容器中运行
2、 用 Maven/ Gradle 插件运行
3、 直接执行 main 方法运行
SpringBoot如何解决跨域问题
跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,无法发送其他类型的请求,在 RESTful 风格的应用中,就显得非常鸡肋,因此我们推荐在后端通过 (CORS,Cross-origin resource sharing) 来解决跨域问题。这种解决方案并非 SpringBoot 特有的,在传统的 SSM 框架中,就可以通过 CORS 来解决跨域问题,只不过之前我们是在 XML 文件中配置 CORS ,现在可以通过实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题。
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping