⛳ SpringBoot入门 - SpringBoot HelloWorld 💭
我们了解了SpringBoot和SpringFramework的关系后,我们可以开始创建一个Hello World级别的项目了。@Gu
🏭创建SpringBoot Web应用
一下是采用IDEA开发工具的创建方式
- 选择 Spring Initialize
Spring 提供的初始化项目工具:
当然可以用 Spring脚手架 初始化项目工程。
-
项目名
-
输入项目名
-
填写GAV信息
- Group:是公司或者组织的名称,是一种命名空间的概念,比如网站,那么group可以是 mrgu.asia。
- Artifact:当前项目的唯一标识。
- Version * :项目的版本号,一般xx-SNAPSHOT表示非稳定版。(新版本的IDEA取消了该功能)
-
选择初始化模块
Spring Initialize可以帮助你选择常见的功能模块的starter包
🐾 初始化后的内容
- README.md
README.md中可以添加这个项目的介绍,它将显示在github/gilab/gitee等仓库托管中项目介绍的首页。
- .gitignore
.gitignore是git仓库,你可以将不需要提交到代码仓库的文件添加到这个文件(比如程序编译后生成的运行目录target等),默认如下
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
### VS Code ###
.vscode/
- pom.xml
在Maven包管理pom.xml中添加依赖包
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.11</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>mrgu.asia</groupId>
<artifactId>demoHelloWorld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demoHelloWorld</name>
<description>demoHelloWorld</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
🎁 给你的第一个应用添加包和代码
添加如下代码,启动即可启动一个WEb服务,通过浏览器访问/hello,并返回Hello World。
package mrgu.asia.demohelloworld;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoHelloWorldApplication {
/**
* main interface
* @param args
*/
public static void main(String[] args) {
SpringApplication.run(DemoHelloWorldApplication.class, args);
}
/**
* hello world
* @return hello
*/
@GetMapping("/hello")
public ResponseEntity<String> hello(){
return new ResponseEntity<>("Hello World", HttpStatus.OK);
}
}
💻 运行你的第一个程序
点击 DemoHelloWorldApplication 入口的绿色按钮,运行程序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-leESmWdH-1678980494227)(E:\Knowledge_base\SpringBoot\02、SpringBoot入门-SpringBoot_HelloWorld.assets\image-20230316182013680.png)]
运行后,看到如下信息:表明程序启动成功(启动了一个内嵌Tomcat容器,服务端口在8080)
这时候我们可以通过浏览器浏览
🚜 一些思考
到此,你会发现一个简单的web程序居然完成了。这里你需要一些思考:
📝 为什么我们添加一个starter-web模块便可以了呢 ?
我们安装Maven Helper的插件,用来查看Spring-boot-starter-web模块的依赖
我们看一下这个模块的依赖,你便能初步窥探出模块支撑
🐾 我们如何更改更多Server的配置呢 ?比如Tomcat Server
为什么Tomcat默认端口号是8080?如前文所述,SpringBoot最强大的地方在于约定大于配置,只有你引入某个模块的xx-start包,它将自动化注入配置,提供了这个模块的功能;比如这里我们在POM中添加了如下的包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
它内嵌了Tomcat并提供了默认的配置,比如默认端口是8080。
我们可以在application.properties或者application.yml中配置。
特别的,如果添加了如下包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
并且你的IDE支持(比如IDEA商业版),可以自动给你配置提示
⭐ SpringBoot 还提供了哪些starter某块呢 ?
Spring Boot 推荐的基础POM文件
名称 | 说明 |
---|---|
spring-boot-starter | 核心POM,包含自动配置支持、日志库和对YAML配置文件的支持 |
spring-boot-starter-amqp | 通过spring-rabbit支持[AMQP](AMQP_百度百科 (baidu.com)) |
spring-boot-starter-aop | 包含 spring-aop 和 AspectJ 来支持面向切面编程(AOP)。 |
spring-boot-starter-batch | 支持 Spring Batch,包含 HSQLDB。 |
spring-boot-starter-data-jpa | 包含 spring-data-jpa、spring-orm 和 Hibernate 来支持 JPA。 |
spring-boot-starter-data-mongodb | 包含 spring-data-mongodb 来支持 MongoDB。 |
spring-boot-starter-data-rest | 通过 spring-data-rest-webmvc 支持以 REST 方式暴露 Spring Data 仓库。 |
spring-boot-starter-jdbc | 支持使用 JDBC 访问数据库。 |
spring-boot-starter-security | 包含 spring-security。 |
spring-boot-starter-test | 包含常用的测试所需的依赖,如 JUnit、Hamcrest、Mockito 和 spring-test 等。 |
spring-boot-starter-velocity | 支持使用 Velocity 作为模板引擎。 |
spring-boot-starter-web | 支持 Web 应用开发,包含 Tomcat 和 spring-mvc。 |
spring-boot-starter-websocket | 支持使用 Tomcat 开发 WebSocket 应用。 |
spring-boot-starter-ws | 支持 Spring Web Services。 |
spring-boot-starter-actuator | 添加适用于生产环境的功能,如性能指标和监测等功能。 |
spring-boot-starter-remote-shell | 添加远程 SSH 支持。 |
spring-boot-starter-jetty | 使用 Jetty 而不是默认的 Tomcat 作为应用服务器。 |
spring-boot-starter-log4j | 添加 Log4j 的支持。 |
spring-boot-starter-logging | 使用 Spring Boot 默认的日志框架 Logback。 |
spring-boot-starter-tomcat | 使用 Spring Boot 默认的 Tomcat 作为应用服务器。 |
所有这些 POM 依赖的好处在于为开发 Spring 应用提供了一个良好的基础。Spring Boot 所选择的第三方库是经过考虑的,是比较适合产品开发的选择。但是 Spring Boot 也提供了不同的选项,比如日志框架可以用 Logback 或 Log4j,应用服务器可以用 Tomcat 或 Jetty。