为什么使用 spring boot

本贴最后更新于 2442 天前,其中的信息可能已经时移世改

Web 应用开发背景

使用 Java 做 Web 应用开发已经有近 20 年的历史了,从最初的 Servlet1.0 一步步演化到现在如此多的框架,库以及整个生态系统。经过这么长时间的发展,Java 作为一个成熟的语言,也演化出了非常成熟的生态系统,这也是许多公司采用 Java 作为主流的语言进行服务器端开发的原因,也是为什么 Java 一直保持着非常活跃的用户群。

最受 Java 开发者喜好的框架当属 springspring 也成为了在 Java EE 开发中真正意义上的标准,但是随着新技术的发展,脚本语言大行其道的时代(Node js,Ruby,Groovy,Scala 等),Java EE 使用 Spring 逐渐变得笨重起来,大量的 XML 文件存在与项目中,繁琐的配置,整合第三方框架的配置问题,低下的开发效率和部署效率等等问题。

这些问题在不断的社区反馈下,Spring 团队也开发出了相应的框架:Spring Boot。Spring Boot 可以说是至少近 5 年来 Spring 乃至整个 Java 社区最有影响力的项目之一,也被人看作是:Java EE 开发的颠覆者(但是不是有点 too young,too simple 的感觉!)。

Spring Boot 解决的问题

(1) Spring Boot 使编码变简单

(2) Spring Boot 使配置变简单

(3) Spring Boot 使部署变简单

(4) Spring Boot 使监控变简单

(5) Spring 的不足

Spring Boot 的干爹和其优点

准确的说,应该是亲爹,但是。。。大家都懂的!

官方地址:http://projects.spring.io/spring-boot/

Spring Boot 继承了 Spring 的优点,并新增了一些新功能和特性:

(1)SpringBoot 是伴随着 Spring4.0 诞生的,一经推出,引起了巨大的反向; 
(2)从字面理解,Boot 是引导的意思,因此 SpringBoot 帮助开发者快速搭建 Spring 框架; 
(3)SpringBoot 帮助开发者快速启动一个 Web 容器; 
(4)SpringBoot 继承了原有 Spring 框架的优秀基因; 
(5)SpringBoot 简化了使用 Spring 的过程; 
(6)Spring Boot 为我们带来了脚本语言开发的效率,但是 Spring Boot 并没有让我们意外的新技术,都是 java EE 开发者常见的额技术。

Spring Boot 主要特性

(1)遵循“习惯优于配置”的原则,使用 Spring Boot 只需要很少的配置,大部分的时候我们直接使用默认的配置即可; 
(2)项目快速搭建,可以无需配置的自动整合第三方的框架; 
(3)可以完全不使用 XML 配置文件,只需要自动配置和 Java Config; 
(4)内嵌 Servlet 容器,降低了对环境的要求,可以使用命令直接执行项目,应用可用 jar 包执行:java -jar; 
(5)提供了 starter POM, 能够非常方便的进行包管理, 很大程度上减少了 jar hell 或者 dependency hell; 
(6)运行中应用状态的监控; 
(7)对主流开发框架的无配置集成; 
(8)与云计算的天然继承;

Spring Boot 的核心功能

(1)独立运行的 Spring 项目

Spring Boot 可以以 jar 包的形式进行独立的运行,使用:java -jar xx.jar 就可以成功的运行项目,或者在应用项目的主程序中运行 main 函数即可;

(2)内嵌的 Servlet 容器

内嵌容器,使得我们可以执行运行项目的主程序 main 函数,是想项目的快速运行;

主程序代码 SpringbootDemoApplication.java

package com.xuliugen.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemoApplication.class, args);
    }
}

(3)提供 starter 简化 Manen 配置

Spring Boot 提供了一系列的 starter pom 用来简化我们的 Maven 依赖,下边是创建一个 web 项目中自动包含的依赖,使用的 starter pom 以来为:spring-boot-starter-web

Spring Boot 官网还提供了很多的 starter pom,请参考:

http://docs.spring.io/spring-boot/docs/1.4.1.RELEASE/reference/htmlsingle/#using-boot-starter

(4)自动配置 Spring

Spring Boot 会根据我们项目中类路径的 jar 包/类,为 jar 包的类进行自动配置 Bean,这样一来就大大的简化了我们的配置。当然,这只是 Spring 考虑到的大多数的使用场景,在一些特殊情况,我们还需要自定义自动配置;

(5)应用监控

Spring Boot 提供了基于 http、ssh、telnet 对运行时的项目进行监控;这个听起来是不是很炫酷!

示例:以 SSH 登录为例

1、首先,添加 starter pom 依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-remote-shell</artifactId>
</dependency>

2、运行项目,此时在控制台中会出现 SSH 访问的密码:

3、使用 SecureCRT 登录到我们的程序,端口为 2000,用户为 user:

密码就是刚才的 shell access;

但是当我点击连接的时候,出现错误:

显然是 SecureCRT 的版本不支持,所以就放弃了这个,使用 Git Bash:

ssh -p 2000 user@127.0.0.1

剩下的事情,大家自己玩吧!

(6)无代码生成和 XML 配置

Spring Boot 神奇的地方不是借助于代码生成来实现的,而是通过条件注解的方式来实现的,这也是 Spring 4.x 的新特性。

Spring Boot 的快速搭建案例

下边使用的是 IDEA 快速搭建一个 Spring Boot 项目

(1)File—-New—New Project

(2)点击 Next 填写相应的信息

(3)点击 Next,选择 Dependencies,这里创建 Web 项目选择—–Web:

(4)点击 Next,设置项目名称,这里默认设置,点击 Next 之后,项目等一下就创建好了

找到应用程序的主函数,运行即可:

注意,在 pom 文件里的 java 版本这个要和你的机子上一致!我的是 1.7,默认创建项目的时候位 1.8:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.7</java.version>
</properties>
  • 技术

    到底什么才是技术呢?

    88 引用 • 179 回帖 • 4 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...