跳到主要内容

Spring HelloWorld

HelloWorld、Maven、SDKMAN、IntelliJ IDEA

信息

示例代码:code/learn-spring/helloworld

基础环境准备

  • JDK:Java 开发工具包(Java Development Kit),建议使用 LTS 版本1,即 Java 8、11 和 17
  • Maven:开源项目管理与构建工具,帮助管理依赖与项目构建过程
  • IDE:集成开发环境,可以选择 IntelliJ IDEA 或者 Eclipse

安装 JDK

由于 Oracle 的商业策略调整 12,自 2019 年 4 月 16 日起的 Oracle JDK 版本不可免费用于商业目的,如有需要可以订阅其服务2。如果出于个人学习目的,可以继续使用 Oracle JDK,但也可以使用 OpenJDK。

使用 HomeBrew 来安装:

brew cask install java11

为了方便安装和管理,可以使用 SDKMAN 来安装 JDK:

curl -s "https://get.sdkman.io" | bash

安装完成后,再打开一个终端(这个要注意),输入:

source "$HOME/.sdkman/bin/sdkman-init.sh"

通过 sdk version 命令可检验安装是否成功:

sdk version

获得当前操作系统可用的 JDK 信息:

也可以在 https://sdkman.io/jdks 页面上可以看到 SDKMAN 支持的 JDK 版本信息

`sdk list java` 

安装 JDK 特定版本:

sdk install java 11.0.2-open

切换 JDK 版本:

sdk use java 1.8.0_192

安装 Maven

Spring 项目支持使用 Maven 与 Gradle 来管理项目的依赖配置与打包等流程。

如果选择使用 IDEA 作为 IDE,IDEA 中自带了 Maven,可以跳过安装的步骤,但还是建议单独安装最新版本的 Maven。

macOS 可以使用 SDKMAN 来安装:

注:Spring Boot 官方要求使用的 Maven 版本必须在 3.3 以上

sdk install maven

验证安装:

注:无论是什么操作系统,在使用 Maven 的 mvn 命令前,都要确保正确安装了 JDK,并且设置了 JAVA_HOME 环境变量

mvn -v

Maven 默认使用官方仓库,在国内访问时可能会比较慢,因此建议配置一个国内的仓库镜像(如阿里云的镜像3):

参考 maven 配置指南:https://developer.aliyun.com/mvn/guide

将如下内容添加到 Maven 安装目录的 conf/settings.xml 文件的 <mirrors></mirrors> 标签中:

<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>

也可以在用户目录的 .m2 子目录中(比如 macOS 或 Linux 的 ~/.m2,Windows 的 C:\Users\ 用户名 .m2)创建 settings.xml,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<settings 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/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
</settings>

安装 IDE

推荐使用 IntelliJ IDEA,社区版(Community 版本)搭配插件也能完全满足需求

macOS 可以通过 HomeBrew 来安装对应版本:

# 安装社区版
brew cask install intellij-idea-ce

从 2020.1 版本开始,IDEA 开始官方支持中文语言了,需要的话可以自行从 Marketplace(插件市场)中安装中文插件

安装完成:

  • 根据机器配置调整 IDEA 的启动参数(见下),让 IDE 的运行更流畅(在菜单中找到 Help → Edit Custom VM Options,在打开的 idea.vmoptions 文件中编辑)
  • 安装插件:Lombok、Maven Helper(为了方便查看 Maven 的 POM 文件)

默认参数:

-Xmx1262m

配置参数:

-Xms1024m
-Xmx2048m
-XX:+UseConcMarkSweepGC
-Djava.net.preferIPv4Stack=true
-Dfile.encoding=UTF-8

IDEA Plugins Marketplace:

Lombok:

Lombok是一个 Java 库,它的设计目的是为了简化 Java 编程,尤其是减少日常开发中大量的样板代码。Lombok 通过在代码中使用特定的注解,能够在编译时自动为类生成构造器、getter/setter、equals、hashCode、toString等方法,从而省去了手动编写这些常见但又繁琐的代码部分。

例如,只需在类定义上加上 @Data 注解,Lombok就会为该类自动生成所有必需的 getter、setter、equals、hashCode 和 toString 方法。这不仅减少了出错的可能性,也使得代码更加简洁易读,开发者能够更专注于业务逻辑的实现。

Lombok 不仅是一个库,它还需要 IDE(如IntelliJ IDEA 或 Eclipse)的插件支持来识别这些注解并在编译时执行相应的代码生成操作。由于其便捷性,Lombok 在 Java 开发者社区中颇受欢迎。

通过 Spring Initializr 创建工程

在正式编码前,需要创建一个工程骨架,完成一些最基本的初始化工作,比如搭建目录结构、初始化 [[Maven]] 的 [[pom.xml]] 文件(如果使用 Gradle 的话则是初始化 build.gradle 文件)以及生成启动类,等等。

Spring 官方为我们提供了一个新工程的初始化工具4Spring Initializr,可以通过它快速创建一个空白工程:

填写完所有信息后,点击 GENERATE(生成),即可下载 helloworld.zip 压缩包。

阿里云基于 Spring Initializr 的代码制作了一套 Aliyun Java Initializr5,在国内访问速度较快,而且是中文界面,其中还包括了一些 Spring Cloud Alibaba 和阿里云的依赖项。

在下载完 helloworld.zip 后,将其解压到某个目录中,然后用 IDEA 导入项目即可:

示例:code/learn-spring/helloworld

编写简单的 REST 服务

在 Spring Framework 和 Spring Boot 的帮助下,我们可以很方便地编写可执行的 REST 服务:

@SpringBootApplication
@RestController
public class Application {

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

@RequestMapping("/helloworld")
public String helloWorld() {
return "Hello World! Bravo Spring!";
}
}

访问端口:8080

浏览器访问:http://localhost:8080/helloworld

Footnotes

  1. LTS(Long Term Support),即长期支持,Oracle 会对 LTS 版本提供长期付费支持,Oracle JDK 8 最长支持到 2030 年 12 月,Oracle JDK 11 最长支持到 2026 年 9 月,Oracle JDK 17 最长支持到 2029 年 9 月

  2. 详见 “Oracle Technology Network License Agreement for Oracle Java SE”

  3. 阿里云 Maven 镜像: https://developer.aliyun.com/mvn/

  4. Spring Initializr: https://start.spring.io/

  5. Cloud Native App Initializer: https://start.aliyun.com/