第一个 SpringBoot 项目 HelloWorld
简介
对于 Java
程序猿来说, Spring
肯定不是一个特别陌生的框架, 但是在开发过程中, 都会遇到两个让人头大的问题, 1. 整合其他框架时各种配置文件, 让人眼花缭乱. 稍不注意就可能导致项目运行错误甚至无法运行. 2. 各种 jar
包的依赖, 都要自己维护, 有时候焦头烂额调试一个晚上, 可能仅仅是因为 jar
包的版本问题.
看到这种情况, Spring
开源组织的大佬们看不下去了. 于是他们便对 spring
框架的全系列组件进行了内部封装, 让每一个 spring
项目都是以 spring
的子项目的形式来运行,以 约定大于配置 为导向, 极大的简化了配置, 解放开发人员.
SpringBoot主要优点:
- 为所有Spring开发者更快的入门
- 开箱即用,提供各种默认配置来简化项目配置
- 内嵌式容器简化Web项目
- 没有冗余代码生成和XML配置的要求
- 提供一系列大型企业级项目的功能性特性(比如:安全、健康检测、外部化配置、数据库访问、
restful
搭建等很多特性
创建项目
系统要求
- Java: 1.8
- SpringBoot: 2.0.0
- Maven: 3.3.9
- IDEA: 2017.2
新建项目
- 打开 IDEA 选择
File-->New-->Project
![](https://img.haomeiwen.com/i636468/2c4f9e8d8dcf63f4.jpg)
选择构建方式
- 选择构建方, Spring Initializr, 选择情况如图, 点击 Next
一般情况下, Choose Initializr Service URL
选项直接选择 Default
, 当国内网络不好的时候也可以选择 Custom
输入构建 SpringBoot
项目的其他网站. 当然, 你也可以选择科学上网.
提示: 使用 http://start.spring.io 构建, 速度会有所提升.
![](https://img.haomeiwen.com/i636468/c52e9cd9d4bd974e.jpg)
填写项目信息
- 填写项目的构建信息, 点击
Next
![](https://img.haomeiwen.com/i636468/810543865e9e4d9c.jpg)
Group: 项目组织唯一的标识符, 实际对应JAVA的包的结构
Artifact: 项目的唯一的标识符, 实际对应项目的名称
Type: 项目构建方式,
Maven
或Gradle
Language: 项目语言
Packageing: 打包方式
Jar
包或War
包Java Version:
java
版本Version: 项目版本号
Name: 项目名称一般和
Artifact
一致Description: 项目介绍
Package: 包结构
选择需要的 jar
-
选择需要的
jar
点击next
, 此处我们只选择web
, 点击next
后期需要其他
jar
时, 可以在生成的pom.xml
文件中修改.
![](https://img.haomeiwen.com/i636468/2179cf4d9e5c6e68.jpg)
选择需要保存的路径
选择需要保存的路径, 点击 Finish
到此为止, 我们的项目创建的工作就完成了, 接下来我们写一个 HelloWorld
并运行起来
编写 HelloWorld 并运行
自动生成的文件
添加完成后, 我们会看到如下的代码结构.
![](https://img.haomeiwen.com/i636468/5e5adf1a6e7658d7.jpg)
然后在 HelloWorldApplication
同级目录下创建类 HelloWorldController
代码如下
package net.abcbook.learn.springboot;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author summer
* @date 2018/4/3 下午4:28
* HelloWorld 程序的 Controller
*/
/*
* @RestController相当于
* @Controler+@ResponseBody
* @Controller表示在Spirng中注入一个bean,这个bean的类型是一个控制器
* @ResponseBody表示返回的数据类型是JSON
*/
@RestController
/*
* @RequestMapping用来定义请求的路径,
* 定义在类上,则当前类下所有的映射路径均有这个前缀
* 括号内传递的值是所映射的路径
*/
@RequestMapping("/demo")
public class HelloWorldController {
/**
* @author summer
* @date 2018/4/3 下午4:31
* @return java.lang.String
* @description HelloWorld 接口
*/
/*
* @GetMapping 相当于 @RequestMapping(method = RequestMethod.GET)
* 同理@PostMapping 相当于 @RequestMapping(method = RequestMethod.POST)
* 另外还有 @PutMapping @DeleteMapping
*/
@GetMapping("/hello")
public String HelloWorld(){
return "Hello World";
}
}
右击 HelloWorldApplication
选择启动或点击工具栏中的启动按钮启动.
![](https://img.haomeiwen.com/i636468/9f4c35025b4e8cbc.jpg)
访问路径 http://localhost:8080/demo/hello 就可以看到期待已久的 HelloWorld
了.
代码介绍
生成的目录中我们需要关注的有如下几个
-
main/java
下的HelloWorldApplication
和HelloWorldController
-
main/resource
下的application.properties
-
src
下的pom.xml
HelloWorldApplication
SpringBoot 的主启动类, 后期降到的其他的配置(如定时器的开启) 也会在此类中开启
/**
* @author summer
* @date 2018/4/3 下午4:22
* @description HelloWorld 的启动类
*/
/*
* 注解表明这是 Spring 的主配置文件
*/
@SpringBootApplication
public class HelloWorldApplication {
/**
* @author summer
* @date 2018/4/3 下午4:23
* @param args 启动参数
* @return void
* @description 启动入口
*/
public static void main(String[] args) {
SpringApplication.run(HelloWorldApplication.class, args);
}
}
HelloWorldController
测试的 Controlle
入口
上文已经讲解
application.properties
SpringBoot
项目的默认配置文件, 使用 properties
格式的简单配置就能完成之前用 xml
好几行才能完成的代码.
后期的项目中, 我们会使用
yml
格式的文件替换properties
文件, 详情请看后期内容
例如我们修改一下端口
#修改端口为 8899
server.port=8899
加上此代码后, 重启一下项目. 再访问路径 http://localhost:8899/demo/hello 又可以看到 HelloWorld
了.
pom.xml
pom.xml
使用过 maven
的童鞋应该对这个文件不陌生. 没错, 他就是 jar
包的管理文件.
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--项目的介绍信息,包括所在组/jar id/版本号等信息-->
<groupId>net.abcbook.learn.springboot</groupId>
<artifactId>hello-world</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<!--项目在maven中的名字和简介信息-->
<name>hello-world</name>
<description>第一个 SpirngBoot 项目</description>
<!--当前项目继承的 SpringBoot 项目-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--设置传输的编码和java JDK的版本信息-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--Web模块相关jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--测试模块,包括JUnit、Hamcrest、Mockito-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<!-- maven编译的相关配置 编译插件-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
项目源码
SpringBoot 教程: https://github.com/lixian13149999/spring-boot-learn
总结
到此为止, 我们的第一个SpringBoot
的 HelloWorld
程序就写完了, 是不是觉得比 SpringMVC
项目搭建起来要便捷很多?
有问题可以在留言区留言, 转发请注明出处, 谢谢