# SpringBoot HelloWorld - 使用 IDEA 快速构架 SpringBoot 项目

# 简介

对于 Java 程序猿来说, Spring 肯定不是一个特别陌生的框架, 但是在开发过程中, 都会遇到两个让人头大的问题, 1. 整合其他框架时各种配置文件, 让人眼花缭乱. 稍不注意就可能导致项目运行错误甚至无法运行. 2. 各种 jar 包的依赖, 都要自己维护, 有时候焦头烂额调试一个晚上, 可能仅仅是因为 jar 包的版本问题.

看到这种情况, Spring 开源组织的大佬们看不下去了. 于是他们便对 spring 框架的全系列组件进行了内部封装, 让每一个 spring 项目都是以 spring 的子项目的形式来运行,以 约定大于配置 为导向, 极大的简化了配置, 解放开发人员.

# SpringBoot主要优点:

  1. 为所有Spring开发者更快的入门
  2. 开箱即用,提供各种默认配置来简化项目配置
  3. 内嵌式容器简化Web项目
  4. 没有冗余代码生成和XML配置的要求
  5. 提供一系列大型企业级项目的功能性特性(比如:安全、健康检测、外部化配置、数据库访问、restful搭建等很多特性

# 创建项目

# 系统要求

  • Java: 1.8
  • SpringBoot: 2.0.0
  • Maven: 3.3.9
  • IDEA: 2017.2

# 新建项目

  • 打开 IDEA 选择 File-->New-->Project

新建项目1

# 选择构建方式

  • 选择构建方, Spring Initializr, 选择情况如图, 点击 Next

一般情况下, Choose Initializr Service URL 选项直接选择 Default , 当国内网络不好的时候也可以选择 Custom 输入构建 SpringBoot 项目的其他网站. 当然, 你也可以选择科学上网.

提示: 使用 http://start.spring.io 构建, 速度会有所提升.

选择构建方式

# 填写项目信息

  • 填写项目的构建信息, 点击 Next

填写项目信息

Group: 项目组织唯一的标识符, 实际对应JAVA的包的结构

Artifact: 项目的唯一的标识符, 实际对应项目的名称

Type: 项目构建方式, MavenGradle

Language: 项目语言

Packageing: 打包方式 Jar 包或 War

Java Version: java 版本

Version: 项目版本号

Name: 项目名称一般和 Artifact 一致

Description: 项目介绍

Package: 包结构

# 选择需要的 jar

  • 选择需要的 jar 点击 next, 此处我们只选择 web , 点击 next

    后期需要其他 jar 时, 可以在生成的 pom.xml 文件中修改.

选择 jar 包

# 选择需要保存的路径

选择需要保存的路径, 点击 Finish

到此为止, 我们的项目创建的工作就完成了, 接下来我们写一个 HelloWorld 并运行起来

# 编写 HelloWorld 并运行

# 自动生成的文件

添加完成后, 我们会看到如下的代码结构.

自动生成的目录结构

然后在 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 选择启动或点击工具栏中的启动按钮启动.

启动项目

访问路径 http://localhost:8080/demo/hello 就可以看到期待已久的 HelloWorld 了.

# 代码介绍

生成的目录中我们需要关注的有如下几个

  • main/java 下的 HelloWorldApplicationHelloWorldController
  • 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

对应示例项目: hello-world

# 总结

到此为止, 我们的第一个SpringBootHelloWorld 程序就写完了, 是不是觉得比 SpringMVC 项目搭建起来要便捷很多?

有问题可以在留言区留言, 转发请注明出处, 谢谢

上次更新时间: 2020/6/16 下午7:33:05