[software development] Spring Boot 应用开发
Tofloor
poster avatar
流浪的加菲
deepin
2024-02-19 14:23
Author

今天刚看一个新闻,说的工商银行取得「基于 Spring Boot 的 web 系统后端实现方法及装置」专利,恰好最近看到Spring Boot这块的信息较多,于是想着摘录下《统信UOS开发者应用指南》上的内容分享给大家,想在deepin上做linux原生应用开发、Web开发的同学可以研究下。先抛出本开发指南的部分目录来给大家看看。

image.png

image.png

image.png

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

Spring Boot 官方网站:https://spring.io/projects/spring-boot

环境安装

Spring Boot 需要依赖 JDK 环境配置和 Apache Maven,通过仓库命令安装:

sudo apt install openjdk-11-jdk maven

通过如下命令验证安装是否成功:

uos@uos:~$ java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.11+9-post-Debian-1deb10u1, mixed mode, sharing)
uos@uos:~$ mvn -version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.11, vendor: Debian, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.19.0-17-amd64", arch: "amd64", fami
ly: "unix"

安装 Spring Boot CLI

Spring Boot CLI 是一个用于开发SpringBoot应用程序的命令行工具。运行以下命令进行安装:

curl -s https://get.sdkman.io | bash
source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install springboot

安装完成后,可以运行以下命令验证 Spring Boot CLI 是否正确安装:

uos@uos:~$ spring --version
Spring CLI v2.5.2

环境配置

不需要进行配置,安装成功即可使用。

开发案例

本案例将展示如何在 UOS 系统创建一个简单的 Spring Boot 项目。

通过网站创建项目

在网站 start.spring.io 上创建一个 Web 项目。在“Dependencies”对话框中搜索并添加“web”依赖项,如图所示。点击“生成”按钮,下载压缩文件,并将其解压缩到计算机上的一个文件夹中。打开网站,点击 ADD DEPENCIES... CTRL+B 按钮。

image.png

选择 Spring Web 如下图:

image.png

点击 GENERATE CTRL+⏎按钮下载代码。

image.png

通过 start.spring.io 创建的项目包含 Spring Boot 框架,但不需要太多代码或配置。Spring Boot 是启动 Spring 项目最快、最流行的方式。

添加你自己的代码

在集成开发环境里打开项目,并在 src/main/java/com/example/demo 文件夹中找到 DemoApplication.java 文件。现在,你可以参考如下内容来更改文件的内容。

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplicat
ion;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue= "World") String name) {
return String.format("Hello %s!", name);
}
}

这是在 Spring Boot 中创建一个简单的“Hello World”web 服务所需的所有代码。
我们添加的 hello()方法被设计为接受一个名为 name 的String 参数,然后将该参数与代码中的单词“hello”结合起来。这意味着如果您在请求中将自己的名字设置为“Amy”,那么响应将是“Hello Amy”。

@RestController 注释告诉 Spring,这段代码描述了一个应该在web上可用的端点。@GetMapping("/hello")告诉 Spring 使用我们的hello()方法来应答发送到 http://localhost:8080/hello 地址的请求。最后,@RequestParam告诉Spring 期望请求中有一个名称值,但如果没有,它将默认使用单词“World”。

构建并运行

现在我们可以构建并运行该程序。打开命令行(或终端)并导航到项目文件所在的文件夹,我们可以通过发出以下命令来构建和运行应用程序:

./gradlew bootRun

这时,您应该会看到一些类似于下面的输出:

Starting a Gradle Daemon (subsequent builds will be faster)
> Task :bootRun
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.1.6)
2023-12-09T18:09:36.453+08:00 INFO 8116 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication using Java 17.0.9 with PID 8116 ()
2023-12-09T18:09:36.454+08:00 INFO 8116 --- [ main] com.example.demo.DemoApplication : No active profile set, fal
ling back to 1 default profile: "default" 2023-12-09T18:09:36.839+08:00 INFO 8116 --- [ main]
o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initializedwithport(s): 8080 (http)
2023-12-09T18:09:36.845+08:00 INFO 8116 --- [ main]
o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-12-09T18:09:36.845+08:00 INFO 8116 --- [ main]
o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.16]
2023-12-09T18:09:36.894+08:00 INFO 8116 --- [ main]
o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embeddedWebApplicationContext
2023-12-09T18:09:36.895+08:00 INFO 8116 --- [ main]
w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 418 ms
2023-12-09T18:09:37.054+08:00 INFO 8116 --- [ main]
o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started onport
(s): 8080 (http) with context path ''
2023-12-09T18:09:37.059+08:00 INFO 8116 --- [ main] com.example.demo.DemoApplication : Started DemoApplicationin 0.78 seconds (process running for 0.945)
<==========---> 80% EXECUTING [3m 32s]
> :bootRun

这里的最后几行告诉我们 Spring 已经启动。Spring Boot 嵌入了ApacheTomcat,可以充当 web 服务器,它监听本地主机端口8080 上的请求。

打开浏览器,在顶部的地址栏中输入 http://localhost:8080/hello,你应该会得到如下的结果:

image.png

常见问题

如何配置数据库连接?

您可以在 Spring Boot 的配置文件(如 application.properties 或application.yml)中配置数据库连接信息。根据您使用的数据库,您需要提供数据库URL、用户名、密码等必要的信息。例如,对于 MySQL 数据库,您可以在配置文件中添加以下内容:

spring.datasource.url=jdbc:mysql://localhost:3306/mydatabasespring.datasource.username=root
spring.datasource.password=secret

如何定义 RESTful API 端点?

在 Spring Boot 中,您可以使用@Controller 或@RestController 注解来定义 RESTful API 端点。使用@RequestMapping 注解指定端点的URL路径,并使用合适的 HTTP 方法注解(如@GetMapping、@PostMapping等)定义方法。例如:

@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}

上述代码定义了一个 GET 请求的/api/hello 端点,返回字符串"Hello, World!"。

如何处理请求参数和路径变量?

您可以在方法参数上使用@RequestParam 注解来接收请求参数,使用@PathVariable 注解来接收路径变量。例如:

@GetMapping("/user")
public String getUser(@RequestParam("id") int userId) {
// 根据 userId 获取用户信息
return "User: " + userId;
}
@GetMapping("/user/{id}")
public String getUserById(@PathVariable("id") int userId) {
// 根据 userId 获取用户信息
return "User: " + userId;
}

上述代码中的 getUser 方法接收名为"id"的请求参数,而getUserById方法接收路径中的"id"变量。

如何使用数据库访问和 ORM?

Spring Boot 提供了多种数据库访问和 ORM 的选择,包括SpringDataJ
PA、Spring Data JDBC、MyBatis 等。您可以根据您的需求选择适合的技术和相关依赖,并使用它们来访问和操作数据库。您可以定义实体类、仓库接口,并利用 Spring Boot 的自动配置功能进行数据库访问的配置。

Reply Favorite View the author
All Replies
流浪的加菲
deepin
2024-02-19 14:32
#1

推荐大家看看这本开发指南,免费的呢applaud

Reply View the author
把一切操作变成GUI
deepin
Backbone of ecological co-construction group
2024-02-19 16:03
#2

建议deepin uos统信 专利能申进申,能申快申。

Reply View the author
132******79
deepin
2024-02-20 11:40
#3

文档下载回来了,浏览了一下,觉得对我没有什么用处。如果有需要,我更喜欢去相当开发工具的官网去学习使用。

Reply View the author