SpringBoot
使用 Spring Boot 很容易创建一个独立运行(运行 jar,内嵌servlet容器)、准生产级别的基于 Spring 框架的项目,使用 Spring Boot 可以不用或者只需要很少的 Spring 配置。
SpringBoot 是 Spring框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物,一个典型的 SpringBoot 应用本质上其实就是一个基于 Spring 框架的应用
Spring Boot核心功能
1)独立运行的Spring项目
Spring Boot 可以以 jar 包的形式独立运行,运行一个 Spring Boot 项目只需通过 java–jar xx.jar 来运行。
2)内嵌Servlet容器
Spring Boot 可选择内嵌 Tomcat、Jetty 或者 Undertow,这样我们无须以 war 包形式部署项目。
3)提供starter简化Maven配置
Spring 提供了一系列的 starter pom 来简化 Maven 的依赖加载,例如,当你使用了spring-boot-starter-web 时,会自动加入相应的依赖包。
4)自动配置Spring
Spring Boot 会根据在类路径中的 jar 包、类,为 jar 包里的类自动配置 Bean,这样会极大地减少我们要使用的配置。当然,Spring Boot 只是考虑了大多数的开发场景,并不是所有的场景,若在实际开发中我们需要自动配置 Bean,而 Spring Boot 没有提供支持,则可以自定义自动配置。
5)准生产的应用监控
Spring Boot 提供基于 http、ssh、telnet 对运行时的项目进行监控。
6)无代码生成和xml配置
Spring Boot 的神奇的不是借助于代码生成来实现的,而是通过条件注解来实现的,这是 Spring 4.x 提供的新特性。Spring 4.x 提倡使用 Java 配置和注解配置组合,而 Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置。
SpringBoot的优缺点
1)优点
- 快速构建项目
- 对主流开发框架的配置无法集成
- 项目可以独立运行,无需外部依赖Servlet容器
- 提供运行时的应用监控
- 极大地提高了开发、部署效率
- 与云计算的天然集成
2)缺点
- 版本迭代速度很快,一些模块改动很大。
- 由于不用自己做配置,报错时很难定位。
- 网上现成的解决方案比较少。
创建一个SpringBoot项目
项目创建过程就不多说了,idea或者TST还是很容易创建的,在项目创建成功后,我们会得到一个 SpringBoot 应用的启动类,如下面代码所示:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
可以看到,@SpringBootApplication 是一个“三体”结构,实际上它是一个复合 Annotation:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
...
...
..
}
虽然它的定义使用了多个 Annotation 进行元信息标注,但实际上对于 SpringBoot 应用来说,重要的只有三个 Annotation,而“三体”结构实际上指的就是这三个 Annotation:
- @Configuration
- @EnableAutoConfiguration
- @ComponentScan
所以,如果我们使用标注如上三个注解的 SpringBoot 启动类,那么整个 SpringBoot 应用依然可以与之前的启动类功能对等,但每次都写三个 Annotation 显然过于繁琐,所以写一个 @SpringBootApplication 这样的一站式复合 Annotation 显然更方便些。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。