1.什么是SpringBoot?答:随着动态语言的流行,Java的开发显得尤为繁琐:配置繁多,开发效率低下,部署过程复杂,第三方技术集成困难。SpringBoot应运而生。它使用“习惯胜于配置”(项目中有很多配置,也有内置的自定义配置,不需要手动配置)理念让你的项目跑得很快。使用SpringBoot很容易创建一个单机运行(运行Jar嵌入Servlet容器)对于基于Spring框架的准生产级项目,你可以在没有或很少有Spring配置的情况下使用SpringBoot。追问:SpringBoot的优缺点是什么?优点:快速构建项目。主流开发框架的非配置集成项目,无需外部依赖即可独立运行。Servlet容器提供运行时应用监控,大大提高开发部署效率。与云计算自然融合。缺点:书籍文献少,深度不够。版本迭代速度很快,部分模块变化较大。由于不需要自己配置,报错时很难定位。网上现成的方案比较少2.引入@SpringBootApplication注解,SpringBoot的自动配置是如何实现的?答:@SpringBootApplication:包含@SpringBootConfiguration(开启的是@Configuration)、@EnableAutoConfiguration、@ComponentScan注解。JavaConfig形式的SpringIoc容器的配置类使用@Configuration,SpringBoot社区推荐使用基于JavaConfig的配置形式。所以,这里的启动类加上@Configuration标记之后,其实就是IoC容器的一个配置类。任何标有@Configuration的Java类定义都是一个JavaConfig配置类。对于任何标有@Bean的方法,其返回值都会被注册为Spring的IoC容器中的一个bean定义,方法名默认为该bean定义的id。@ComponentScan对应XML配置中的元素。@ComponentScan的作用是自动扫描并加载符合条件的组件(如@Component和@Repository等)或bean定义。北京java培训最终会将这些bean定义加载到IoC容器中。我们可以通过basePackages等属性细粒度的自定义@ComponentScan自动扫描的范围。如果不指定,默认的Spring框架实现将从声明@ComponentScan所在类的包开始扫描。英文意思是自动配置。简而言之,就是借助@Import,将所有满足自动配置条件的bean定义加载到IoC容器中。(其中最重要的是@Import(EnableAutoConfigurationImportSelector.class)。通过EnableAutoConfigurationImportSelector,@EnableAutoConfiguration可以帮助SpringBoot应用将所有符合条件的@Configuration配置加载到当前SpringBoot创建和使用的IoC容器中。这个配置模块的主要用途是SpringFactoriesLoader,SpringFactoriesLoader是Spring的工厂加载器,这个对象提供了loadFactoryNames方法,入参是factoryClass和classLoader,也就是说需要传入工厂类名和对应的类加载器,该方法会加载搜索路径类添加器的根据指定的classLoader下的指定文件,即spring.factories文件,传入的工厂类是接口,文件中对应的类是接口的实现类,或者finally作为实现类。)3.什么是SpringBootStarters?和自动配置一样,SpringBootStarter的目的是简化配置,SpringBootStarter解决了复杂的依赖管理配置问题。有了它,当我需要构建一个web应用时,我就不用遍历所有的依赖包了。项目的依赖管理一一添加,但是只需要一个配置spring-boot-starter-web,同理如果要引入持久化功能,可以配置spring-boot-starter-data-jpa4,SpirngBoot常用的两个配置文件回答:一个是properties,一个是yaml。追问:什么是YAML?YAML配置有什么好处?YAML可以说是现在非常流行的一种配置文件格式,前端和后端都可以看到YAML的配置。那么YAML配置与传统的properties配置相比有哪些优势呢?配置是有序的。在一些特殊场景下,有序的配置很关键。支持数组,数组中的元素可以是基本数据类型,也可以是对象。简洁的。与properties配置文件相比,YAML还有一个缺点,就是不支持@PropertySource注解导入自定义YAML配置。5、你了解SpringBoot加载配置文件的优先级吗?SpringBoot加载配置文件的优先级从高到低依次为:file:./config/file:./classpath:/config/classpath:/SpringBoot会从这四个位置加载所有主要的配置文件,而带有的配置高优先级将覆盖低优先级配置,以及补充配置。说明:file表示主目录,classpath表示类路径。不明白的请看下图。文章来自代码世界小白
