记录16

news/2025/2/21 23:28:58/文章来源:https://www.cnblogs.com/mlo9i/p/18727505

JavaWeb每日学习记录(第15天):Spring Boot入门与快速开发

今天是JavaWeb学习的第十五天,我正式开始学习Spring Boot框架。Spring Boot是基于Spring框架的进一步封装,旨在简化Spring应用的初始搭建和开发过程。它通过“约定优于配置”的理念,极大地减少了开发中的繁琐配置,使得开发者能够更专注于业务逻辑的实现。今天我主要学习了Spring Boot的基本概念、项目搭建以及如何快速开发一个简单的Web应用。


一、Spring Boot入门

Spring Boot的核心优势在于它的自动化配置(Auto-Configuration)和独立运行能力。通过spring-boot-starter模块,Spring Boot能够自动配置Spring和相关依赖,从而实现“开箱即用”。

示例1:创建第一个Spring Boot项目

1.使用Spring Initializr快速生成项目
我通过Spring Initializr生成了一个基础的Spring Boot项目,选择了以下依赖:

• Spring Web

• Spring Data JPA

• MySQL Driver

• Thymeleaf(作为模板引擎)

2.项目结构
生成的项目结构如下:

my-spring-boot-app/
├── src/
│   ├── main/
│   │   ├── java/com/example/demo/
│   │   │   └── DemoApplication.java
│   │   ├── resources/
│   │   │   ├── application.properties
│   │   │   └── templates/
│   │   └── web/
│   │       └── static/
│   └── test/
│       └── java/com/example/demo/
│           └── DemoApplicationTests.java
└── pom.xml

3.启动Spring Boot应用

package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

通过@SpringBootApplication注解,Spring Boot自动开启了Spring的自动化配置功能。运行main方法后,应用会自动启动一个内嵌的Tomcat服务器,默认监听8080端口。


二、开发一个简单的Web应用

为了更好地理解Spring Boot的开发模式,我尝试开发一个简单的用户管理系统,支持用户注册和列表展示功能。

示例2:用户管理系统

1.创建用户实体类(User.java

package com.example.demo.model;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String username;private String email;// Getter和Setter方法
}

2.创建用户仓库接口(UserRepository.java

package com.example.demo.repository;import com.example.demo.model.User;
import org.springframework.data.jpa.repository.JpaRepository;public interface UserRepository extends JpaRepository<User, Long> {
}

3.创建用户控制器(UserController.java

package com.example.demo.controller;import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;@Controller
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserRepository userRepository;@GetMapping("/register")public String showRegisterForm(Model model) {model.addAttribute("user", new User());return "register";}@PostMapping("/register")public String registerUser(@ModelAttribute("user") User user) {userRepository.save(user);return "redirect:/user/list";}@GetMapping("/list")public String listUsers(Model model) {model.addAttribute("users", userRepository.findAll());return "userList";}
}

4.创建视图页面
使用Thymeleaf模板引擎创建用户注册表单(register.html)和用户列表页面(userList.html)。

register.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>Register</title>
</head>
<body><h1>User Registration</h1><form th:action="@{/user/register}" method="post">Username: <input type="text" name="username"><br>Email: <input type="email" name="email"><br><input type="submit" value="Register"></form>
</body>
</html>

userList.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>User List</title>
</head>
<body><h1>User List</h1><table border="1"><tr><th>ID</th><th>Username</th><th>Email</th></tr><tr th:each="user : ${users}"><td th:text="${user.id}"></td><td th:text="${user.username}"></td><td th:text="${user.email}"></td></tr></table>
</body>
</html>

通过Spring Boot的自动化配置和Thymeleaf模板引擎,我能够快速开发出一个功能完整的用户管理系统,而无需手动配置大量的XML文件。


三、Spring Boot的自动化配置

Spring Boot的核心功能之一是自动化配置。通过application.properties文件,我可以轻松地自定义应用的配置,例如数据库连接、服务器端口等。

application.properties

# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=password# JPA配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true# 服务器端口
server.port=8080

通过这些配置,Spring Boot能够自动配置数据源、JPA和内嵌的Tomcat服务器,极大地简化了开发过程。


四、总结

今天我学习了Spring Boot框架的基本概念和快速开发模式。通过Spring Initializr,我能够快速生成一个基础的Spring Boot项目,并通过自动化配置减少了大量的繁琐配置。同时,我开发了一个简单的用户管理系统,进一步巩固了Spring Boot的开发模式。

Spring Boot是现代JavaWeb开发中不可或缺的框架,它极大地提升了开发效率,使得开发者能够更专注于业务逻辑的实现。明天,我计划深入学习Spring Boot的高级功能,如自定义自动化配置、集成外部服务(如Redis、RabbitMQ)等,进一步提升我的Spring Boot开发能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/887298.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录14

JavaWeb每日学习记录(第14天):Spring MVC高级功能与综合应用 2024年X月X日 星期X 晴 今天是JavaWeb学习的第十四天,我继续深入学习Spring MVC框架的高级功能,并尝试将这些功能综合应用到一个更复杂的Web项目中。今天的主要内容包括请求参数处理、文件上传下载、拦截器(In…

表的前端代码-4

<!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>老年人能力评估表</title><style…

系统注册前后端代码

前端 <!DOCTYPE html> <html lang="en"> <head><meta charset="utf-8"><title>注册</title><link rel="stylesheet" type="text/css" href="css/common.css"><link rel="…

牛客题解 | 字符串的排列

题目 题目链接 描述 这是一篇针对初学者的题解,用递归方法解决。 知识点:字符串,递归,回溯 难度:一星题解 题目抽象:给定一个字符串,求该字符串的全排列。 方法:递归法 如图:如图所示的全排列可以发现,对于这个排列,我们是固定A不动,然后交换B与C,从而得到"A…

牛客题解 | 岛屿数量

题目 题目链接 题目主要信息:给一个01矩阵,1代表是陆地,0代表海洋,如果两个1相邻,则这两个1属于同一个岛 只考虑上下左右为相邻 判断岛屿的个数举一反三: 学习完本题的思路你可以解决如下题目: BM61. 矩阵最长递增路径 方法一:dfs(推荐使用) 知识点:深度优先搜索(d…

牛客题解 | 寻找峰值

牛客输入输出题单题解题目 题目链接 题目主要信息:给定一个长度为n的数组,返回其中任何一个峰值的索引 峰值元素是指其值严格大于左右相邻值的元素 数组两个边界可以看成是最小,\(nums[-1] = nums[n] = -\infty\) 峰值不存在平的情况,即相邻元素不会相等举一反三: 学习完本…

java 线程的生命周期和锁

线程的生命周期: Thread.state枚举类共有6种状态:NEW:尚未启动的线程状态; RUNNABLE:jvm中执行的状态; BLOCKED:被阻塞等待监视器锁定的状态; WAITING:等待其他线程执行的状态; TIME_WAITING:达到执行等待时间的线程状态; TERMINATED:已退出线程的状态;线程生命周…

环境搭建与第一个Web项目

开发环境配置<!-- 创建Maven Web项目依赖 --> <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope> </dependency>…

牛客题解 | 判断是否为回文字符串

牛客输入输出题单题解题目 题目链接 题目的主要信息:判断字符串是否是回文字符 回文字符即首尾相互往中靠,字符都是相同的举一反三: 学习完本题的思路你可以解决如下题目: BM13. 判断一个链表是否为回文结构 BM87. 合并两个有序数组 BM91. 反转字符串 方法一:首尾依次比较…

DeepSeek满血版在IDEA中快的飞起

现在国内的 AI 竞争,已经不是单纯的“谁的模型更强”,而是谁的 AI 生态更繁荣。阿里云靠开源,把自己送上了这个生态的核心位置。当同行还在用API调用次数计算商业价值时,阿里云已化身 AI 时代的"技术普惠者"。作者:沉默王二 有没有发现?不知不觉中,阿里已经完…

牛客题解 | 兑换零钱(一)

牛客输入输出题单题解题目 题目链接 题目主要信息:给定数组arr,arr中所有的值都为正整数且不重复 arr中每个值代表一种面值的货币,每种面值的货币可以使用任意 组成aim的最少货币数 如果无解,请返回-1举一反三: 本题属于背包问题的一种简化版本,学习完本题的思路帮助你解…