其实在用了 Python、Ruby 等语言后,再也回不去 Java 的一个很大原因,就是它的配置太多了,在用最受欢迎的 Spring 来做一个简单的 Hello World 输出,也要成吨的配置,这让脱了裤子的我们顿时没了兴致,但是 StringBoot 解决了这个问题。
Spring Boot 是一个轻量级框架,可以完成基于 Spring 的应用程序的大部分配置工作。其实说白了,它封装好了我们默认需要一些配置,我们只需要继承它就可以了。
本章将简单介绍如何使用 StringBoot 运行一个最简单的 Web 项目,来输出 Hello World ,Demo 地址:https://github.com/wxnacy/study/tree/master/java/SpringBoot-HelloWorld
工作环境
- JDK >= 8
- Maven 最新版本(我默认你已经学习了 Maven 的基础知识)
- Git
- 任意开发工具,比如 Vim
创建项目
1 | mvn archetype:generate -DgroupId=com.wxnacy.spring -DartifactId=SpringBoot-HelloWorld -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false |
使用 maven-archetype-quickstart
模板快速创建一个简单的 jar 项目即可,
配置 pom.xml
1 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
它做了这么几件事
- 继承
spring-boot-starter-parent
包完成配置 - 指定
spring-boot-starter-web
包明确该项目为 web 项目 - 使用
spring-boot-maven-plugin
来最终构建项目
Controller
编辑 src/main/java/com/wxnacy/spring/HelloController.java
类
1 | package com.wxnacy.spring; |
@RestController
注解相当于集合了 @Controller
和 @ResponseBody
两个注解的功能,代表该类已经做好了使用 SpringMVC 框架来构建 web 请求的准备。
@RequestMapping
注解将地址 /
映射到 index()
方法上。
创建 Application
src/main/java/com/wxnacy/spring/HelloController.java
1 | package com.wxnacy.spring; |
@SpringBootApplication
将融合以下几种注解的功能
@Configuration
标记类作为 Application 上下文 bean 的源@EnableAutoConfiguration
告诉Spring Boot开始添加基于classpath设置、其他bean和各种属性的设置。@ComponentScan
告诉 Spring 在当前包中查找其他组件、配置和服务,允许它找到控制器。
最后使用 main()
方法来启动一个 Application,全部配置就完成了。你可能注意到,这个项目没有一个 XML 配置,这就是 SpringBoot 要做的,完全用 Java 的注解来进行配置,它已经用足够好的默认值来配置一个 web 项目,比如以前必备的 DispatcherServlet
还有一个使用 @Bean
注解的 commandLineRunner()
方法,它并不是必备的,但是可以将项目启动所需要的 bean 都打印出来。
运行
1 | $ mvn clean package && java -jar target/SpringBoot-HelloWorld-1.0-SNAPSHOT.jar |
或
1 | $ mvn spring-boot:run |
1 |
|
当看到这样的信息就代表启动成功了,从Let's inspect the beans provided by Spring Boot
开始输出的信息,就是所有加载到的类
查看结果
1 | $ curl http://localhost:8080 |
1 | Hello World |
参考
