目前JAVA平台的开发需要我们手动配置的地方非常多,影响了开发效率。为此,spring boot应运而生,它使用“习惯优于配置”的理念,让你的项目快速运行起来,就是说系统,类库,框架应该假定合理的默认值,而非要求提供不必要的配置。使用Spring Boot可以让我们快速创建一个基于Spring的项目,而让这个Spring项目跑起来我们只需要很少的配置就可以了。
一.核心功能
1.可以以jar包形式独立运行;
2.内嵌servlet容器,无须以war包形式部署;
3.提供starter简化maven配置;
4.自动配置spring;
5.无须xml配置文件。
二.基本配置:
Spring Boot的项目一般都会有*Application的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法。在main方法中,使用SpringApplication.run,来启动项目。
@SpringBootApplication注解是Spring Boot的核心注解,它其实是一个组合注解。主要组合了 @Configuration、@EnableAutoConfiguration、@ComponentScan 。如果不使用@SpringBootApplication则需要在入口类加上这三个注解。
其中@EnableAutoConfiguration让Spring Boot 根据类路径中的jar包依赖为当前项目进行自动配置。例如添加了spring-boot-starter-web 依赖,就会自动配置添加tomcat和spring mvc的依赖,spring boot就会对tomcat和spring mvc进行自动配置。
SpringBoot会自动扫描@SpringBootApplication所在类的同级包以及下级包里的Bean。建议入口类放置在groupId+arctifactId组合的包下。
如果要关闭特定的自动配置,可以使用exclude参数,例如:
@SpringBootApplication(exclude=DataSourceAutoConfiguration.class})
在Spring Boot项目中推荐使用@ SpringBootConfiguration替代@Configuration 。 @SpringBootConfiguration:这是Spring Boot项目的配置注解,这也是一个组合注解:组合了@Configuration。
Spring Boot项目使用一个全局的配置文件application.properties或者是application.yml,在resources目录下或者类路径下的/config下,一般我们放到resources下。
三.核心原理:
@SpringBootApplication注解的核心功能由@EnableAutoConfiguration提供,@EnableAutoConfiguration的源码中使用@Import导入了EnableAutoConfigurationImportSelector类,
该类使用SpringFactoriesLoader.loadFactoryNames方法来扫描具有META-INF/spring.factories文件的jar包。在spring.factories文件中声明了有哪些自动配置。这些声明是一系列类名,对应着一系列自动配置类,例如:JmsAutoConfiguration、RedisAutoConfiguration。
Spring Boot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入到Spring容器。
学习真是一件苦差事,有时候会怀疑自己。2018年的春天(spring)已经来了,为何心中总感觉有些阴霾挥之不去呢。人生总有些遗憾的事,weiwei一笑,留作回忆吧。
但做好事,莫问前程。