简介
1.内置很多组件
2.简化配置,自动配置
Spring Boot是伴随着Spring4.0共同诞生的,它的目的就是简化spring的配置及开发,并协助开发人员可以整体管理应用程序的配置而不再像以前那样需要做大量的配置工作,它提供了很多开发组件,并且内嵌了web应用容器,如tomcat和Jetty等。其目的便是使我们的开发变得简化并且能大幅度提高开发人员的开发效率,为了简化Spring功能的配置我们可以引入或启动我们需要的Spring功能。这样做的好处就是避免开发人员过多的对框架的关注,而把更多的精力与时间放在系统的业务逻辑代码中。
Spring Boot 的特点
1. 独立运行的 Spring 项目
Spring Boot 可以以 jar 包的形式独立运行,Spring Boot 项目只需通过命令“ java–jar xx.jar” 即可运行。
2. 内嵌 Servlet 容器
Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。
3. 提供 starter 简化 Maven 配置
Spring Boot 提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置。Spring Boot 提供了大量开箱即用(out-of-the-box)的依赖模块,例如 spring-boot-starter-redis、spring-boot-starter-data-mongodb 和 spring-boot-starter-data-elasticsearch 等。这些依赖模块为 Spring Boot 应用提供了大量的自动配置,使得 Spring Boot 应用只需要非常少量的配置甚至零配置,便可以运行起来,让开发人员从 Spring 的“配置地狱”中解放出来,有更多的精力专注于业务逻辑的开发。
4. 提供了大量的自动配置
Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。
5. 自带应用监控
Spring Boot 可以对正在运行的项目提供监控。
6. 无代码生成和 xml 配置
Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置。
web-starter
spring-boot-starter-web(Web 场景启动器) 来为 Web 开发予以支持。spring-boot-starter-web 为我们提供了嵌入的 Servlet 容器、tomcat、以及 SpringMVC 的依赖,并为 Spring MVC 提供了大量自动配置,可以适用于大多数 Web 开发场景。
核心注解@SpringBootApplication
SpringBootApplication 本质上是由 3 个注解组成:
- @Configuration:告诉springboot这是一个配置类(等于xml配置文件),在里面配置的@Bean相当于xml中配置的<bean>。
- @EnableAutoConfiguration:使用自动配置,从classpath中搜索所有META-INF/spring.factories配置文件,然后将其中xxxAutoConfiguration对应的配置项加载到spring容器。
- @ComponentScan:ComponentScan 默认会扫描当前 package 下的的所有加了@Component 、@Repository、@Service、@Controller的类到 IoC 容器中;
springboot自动装配的实现原理
如果是之前的spring中使用redis需要在xml定义bean,现在只需要依赖一个spring-boot-starter-data-redis的jar包,jar中定义了RedisConfiguration,当启动的时候spring会自动装载RedisConfiguration,RedisConfiguration类的路径放在了classpath:META-INF/spring.factories的文件中,spring会加载这个文件中配置的configuration
(1)SpringApplication.run(AppConfig.class,args)会执行refreshContext(context)
(2)refreshContext(context)内部会解析我们的配置类上的标签,实现自动装配功能的注解@EnableAutoConfiguration
(3)会解析@EnableAutoConfiguration这个注解里面的@Import引入的配置类AutoConfigurationImportSelector
(4)AutoConfigurationImportSelector这个类会读取jar包中的META-INF/spring.factories文件
(6)spring.factories配置了要自动装配的Configuration类
Spring SPI / 自定义starter
在springboot的自动装配过程中,最终会加载META-INF/spring.factories文件,而加载的过程是由ImportSelector中的SpringFactoriesLoader加载的。从CLASSPATH下的每个Jar包中搜寻所有META-INF/spring.factories配置文件,然后将解析properties文件,找到指定名称的配置后返回。需要注意的是,其实这里不仅仅是会去ClassPath路径下查找,会扫描所有路径下的Jar包,只不过这个文件只会在Classpath下的jar包中。
通过spi技术可以自定义starter,在自定义的配置文件META-INF/spring.factories中加入实现类,依赖这个starter的项目就会扫描jar包下的配置,找到实现类进行装载实例化。
21万+

被折叠的 条评论
为什么被折叠?



