1. 请谈一下你对SpringBoot的理解?
Springboot主要用来简化Spring的开发,首先它不是一个全新的MVC框架,内置了Servlet容器比如
Tomcat,jetty都不需要部署war包,而且配置信息非常简单不需要像SpringMVC那种很复杂的去配置
root和MVC两个ioc容器,当然也为SpringCloud这种微服务做了个铺垫吧算是
  1. 谈一下SpringBoot的自动配置原理
主要是通过启动类上面@SpringBootApplication,这个注解其实包含着
@ComponentScan,@EnableAutoConfigurtion,@SpringBootConfigurtion三个,其中
@EnableAutoConfigurtion,它的作用就是加载classpath下的所有的jar包中META-
INF/spring.fartories文件中所有符合条件的类,而这些类中你点进去会发现他们都有一个@EnableConfigurationProperties的注解,这个注解会自动的扫描application.yml文件以xx开
头的属性配置只要你写了,被扫描到了,那就会通过反射的方式会把这些类加载到ioc容
中
总的来说的@EnableAutoConfiguration注解通过@SpringBootApplication被间接的标记在了Spring
 Boot的启动类上。在SpringApplication.run(...)的内部就会执行selectImports()方
法,找到所有JavaConfig自动配置类的全限定名对应的class,然后将所有自动配置类加载
到Spring容器中
  1. 你在项目中SpringBoot配置文件用的什么格式的?
yml文件
首先yml文件的格式段落结构很清晰,让人一目了然,层级关系通过换行缩进表示,很容易上手,SpringBoot通过@ConfigurtionProperties这个注解
可以专门的读application.yml文件,不需要像用properties文件需要配置属性,之后再通过xml或者类去读
properties配置的value值,再给属性赋值来配置数据源
而yml文件不需要,因为@SpringbootConfigurtion会把classpath下所有jar读入进来,而只要是Springboot父容器管理的依赖,在启动时会去读application.yml文件是否有特定的以xx开
头的配置,比如以server,spring,mybatis..等等开头,它只要找到它会自动配置
另外yml文件会在Spring Boot中多环境配置文件名需要满足application-{profile}.yml的格式,其中{profile}对应你的环境标识,比如:
application-dev.yml:开发环境
application-test.yml:测试环境
application-prod.yml:生产环境
至于哪个具体的配置文件会被加载,需要在application.yml文件中通过spring.profiles.active属性来设置,其值对应{profile}值。
总之十分方便开发
  1. Springboot和SpringMVC的区别
Springboot的配置比SpringMVC要简单很多,不需要像SpringMVC那样把两个ioc容器都写
的很复杂,
其次Springboot是没有web.xml文件的,而且它有程序启动的入口内置了Tomcat,jetty,不需要
自己去装配
还有就是Springboot是没有xml配置文件的,一切第三方的配置写在类中加一个
@Configurtion的注解即可
解决跨域问题的时候,SpringMVC写一个全局的过滤器在类上加一个@WebFilter("/*"),而
Springboot需要在启动类中通过@Bean把这个过滤器引进类
  1. Springboot如何解决跨域问题?
我知道的方式有三种吧,而我常用的方式是写一个CrossFilter类配置好请求头和响应头
允许携带的东西,然后通过在启动类里通过@ean引进来

持续更新中

更多推荐

SpringBoot面试题大全