什么是Spring Boot
[TOC]
这将是一个更专注于引入Spring Boot的简短帖子, 我们将讨论“ 什么是Spring Boot ”?以及Spring Boot如何帮助构建基于Java的企业应用程序。
介绍
作为Java开发人员,我们很可能直接或间接地使用基于Spring Framework的应用程序。Spring有许多方法可以配置它的行为,它提供了使用基于XML的配置或使用Annotations的选项,JavaConfig正在成为新的基于Spring的应用程序的事实上的标准。虽然这些选项看起来非常好,但对于大型企业应用程序涉及数百个模块和复杂的业务规则,这些配置可能变得非常复杂。以下是大型应用程序可以为图片带来的一些复杂问题
- 每个模块都有自己的配置。
- 每个模块都包含自己的一组依赖项(第三方依赖项)
- 升级应用程序(例如
Spring 4.x to 5.x
)将变得复杂,因为我们需要确保正确升级所有必需的依赖项。 - 如果某些依赖项无法正常工作,那么尝试查找根本原因是一个大型应用程序非常复杂且具有挑战性。
所有上述问题或多或少都与确保在开发团队开始处理实际任务之前我们拥有一切有关。现在让我们谈谈我们用来处理任何基于Spring的应用程序的另一个用例,假设我们想创建一个基于Web的应用程序,这些是我们大多数人定期做的最常见的步骤
- 使用我们选择的Maven或IDE创建Web应用程序。
- 复制标准Web应用程序配置(Spring MVC应用程序的web.xml配置)。
- 根据我们的要求调整以上配置。
- 配置Spring MVC标准bean就像
ViewResolver, MessageSource etc.
- 配置要用于我们的应用程序的数据库属性。
- 建立DB层和底层确保数据库连接到位之前,我们就可以开始使用它(
EntityManagerFactory
,TransactionManager
等等)
此列表可以根据我们的应用程序类型显着增长
1.什么是Spring Boot
所有上述步骤对我们来说都很明显,但它们给开发团队增加了很多开销,而不是专注于解决实际的业务问题,将消耗初始时间以确保一切都在正确的位置开始工作。将Spring Boot视为可以自动为我们完成这些初始任务的工具,确保团队可以快速开始解决实际业务问题而不是花时间在初始配置和设置。
Spring Boot提供了开箱即用的以下功能
- 它通过采用固定观点来简化Spring依赖关系(我们将在更详细地讨论它)。
- Spring Boot提供了一组预先配置的技术/框架,以减少容易出错的配置,因此我们作为开发人员专注于构建业务逻辑而不是考虑项目设置。
- 你真的不需要那些大
XML configurations
项目。 - 直接嵌入Tomcat,Jetty或Undertow。
- 提供自以为是
Maven POM
的简化配置
使用Spring Boot,可以轻松管理和处理介绍部分中突出显示的问题。。我们不需要在升级期间手动搜索兼容的jar,Spring Boot将确保我们的应用程序升级到正确的版本(这称为在应用程序上工作,最小化)
让我们看一下pom.xml
Web应用程序的示例,以了解示例Spring Boot配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.javadevjournal.demo</groupId>
<artifactId>sample web application</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
</parent>
<name>rWeb Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>
只需密切关注<packaging>
标签,Spring Boot就可以灵活地运行我们的应用程序,jar
而不是强制我们使用war
所需的包装类型。
2.更好的依赖管理
只需仔细检查配置,你就不会找到所有Spring依赖项的任何条目(比如web MVC, core, AOP, ORM, Validation API
等),你可能已经注意到类似的条目 spring-boot-starter-*
,这就是Spring Boot依赖管理过程。我们已添加 spring-boot-starter-web
到我们pom.xml
和Spring Boot将为Spring MVC
应用程序提取所有必需的依赖项(不再需要手动配置)。
3.自动配置
自动配置是Spring Boot的另一个有趣功能,这就是Spring Boot团队说它有意见的原因。
- 它将添加第2点中突出显示的所有依赖项。
- 自动配置表明Spring Boot有一些合理的默认值,即基于配置,Spring Boot会猜测应用程序的类型,并提供运行应用程序所需的默认实现,以防我们在应用程序中没有定义它们。如果你定义了这些,Spring Boot将确保将这些默认值从上下文中删除,并让你的自定义配置负责应用程序。
4. Servlet容器
你是否记得在Servlet容器(Tomcat等)上部署应用程序的过程,每次我们进行这些小的更改并需要将它们部署到应用服务器来测试我们的更改?
Spring Boot为嵌入式Servlet容器提供支持,我们不再需要在app服务器上部署我们的应用程序(这可以使用标准main方法轻松运行),但同时我们可以使用http://在浏览器上访问我们的应用程序<主机>:<端口>
Spring-boot-starter-web entry
我们pom.xml
将为我们的Web应用程序提供嵌入式servlet容器,Apache Tomcat是Spring Boot提供的默认servlet容器,但是,Spring启动提供了使用其他servlet容器的方法(我们必须为此添加所需的启动器)。
网友评论