1、 springboot介绍
由于J2EE开发时繁琐的配置、低的开发效率及复杂的部署流程,而且第三方集成难度大。springboot规避了以上缺点,简化开发,不需要太关注框架的配置。
J2EE笨重的开发、繁琐的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。
SpringBoot的出现就是为了简化开发、去繁从简。是整合Spring技术栈的一站式框架,其作为spring的子项目有很多优点:
1)创建独立Spring应用
2)内嵌Tomcat、Jetty(无需部署war包)
3)自动starter依赖,简化构建配置
4)自动配置Spring以及第三方功能
5)没有代码生成、无需编写XML配置,约定大于配置,实现开箱即用。
6)提供生产级别的监控、运行状况检查及及外部优化配置
缺点:
1)迭代较快。
2)封装太深,内部原理复杂,不容易精通.
2、springboot 的starter 的启动原理
starter是一种服务,是springBoot重要的组成部分,在创建SpringBoot应用用于web开发时,选择的是spring-boot-starter-web。使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由SpringBoot会自动通过classpath路径下的类发现并加载需要的Bean。
通过starter,我们能够快速的引入一个功能,而无需额外的配置。同时starter还会提供给我们预留的自定配置选项,使用者只需要在application.properties中设置相关参数,就可以实现配置的个性化。个人理解认为springBoot Starter就是一个智能化的配置类@Configuration。
原理
引入maven依赖及配置文件:
1) SpringBoot 在启动时会去依赖的starter包中寻找 resources/META-INF/spring.factories 文件,然后根据spring.factories文件中的配置Jar包去扫描项目所依赖的Jar包,找到需要自动配置的类。
2)根据 spring.factories配置加载AutoConfigure类。
3)根据 @Conditional注解的条件,进行自动配置并将Bean注入Spring Context 上下文当中。
配置类上面包括以下注解:
@Configuration 表明是一个配置文件,被注解的类将成为一个bean配置类。
@ConditionalOnClass 当classpath下发现该类的情况下进行自动配置。
@ConditionalOnBean 当classpath下发现该类的情况下进行自动配置。
@EnableConfigurationProperties 使@ConfigurationProperties注解生效。
@AutoConfigureAfter 完成自动配置后实例化这个bean。
3、springboot的核心注解及作用
SpringBoot主要有三个核心注解:
SpringBootConfiguration、EnableAutoConfiguration、ComponentScan,依赖这几个注解可以完成自动装配的功能,将项目中需要的Bean注入到Spring容器里面。
SpringBoot程序在启动过程中会解析以下三个注解:
1)SpringBootConfiguration:包含了Configuration注解,实现配置文件,相当于spring中的XML配置文件的applicationContext.xml。
2)ComponentScan:指定扫描范围, 可自动发现和装配Bean,默认扫描SpringBootApplication注解类所在的包路径下文件,所以最好将该启动类放到根包路径下。
3)EnableAutoConfiguration:SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置功能。