用SpringBoot开发java程序笔记

简介: 用SpringBoot开发一个简单的java程序,让你轻松体验Java应用开发完整过程

SpringBoot快速上手

  • New Project
  • Spring Initializr 注意社区版 Intellij IDE 没有这项,需要额外安装插件
  • Project SDK: 1.8
  • Spring Initializr Project Settings:Group 组织一般公司域名倒写,Artifact 项目名,Maven,Java,Jar,Java version: 8
  • Web,Spring Web

JDK8或者JDK1.8是由于自从JDK1.5/JDK5命名方式改变后遗留的新旧命名方式问题,所以我们口中常说的Java8、JDK8、JDK1.8其实是同一个东西。

运行报错:

  • Error:Cannot determine path to 'tools.jar' library for openjdk-19
  • Error:java: 错误: 不支持发行版本 17

上面这两个报错一般是 JDK 或编辑器版本不对,可以直接用最新的的社区版 Intellij IDE

端口被占用

# 【mac】
# 查看被占用的端口号,8080 就是要查看的端口
sudo lsof -i tcp:8080

# 杀死进程,PID 是对应进程的 PID
sudo kill -9 PID

# 【windows】
# 查看端口8080被哪个进程占用
netstat -ano | findstr "8080"    

# 杀死进程
kill -9 PID

项目热部署

类似前端的自动热更新和运行 node 项目的 nodemon,需要借助 spring-boot-devtools

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

添加到 pom.xml 文件中,类似前端里的 package.json,用来管理项目依赖。

添加好后还须在 src/main/resources/application.properties 文件里配置一下让它生效。

IDE 中还须额外配置:

  • Settings页面(社区版的设置没在File菜单下,在右上角的设置小图标里),Build,Execution,Deployment => compile => Build project automatically
  • Maintenance页面:windows 上 ctrl+alt+shift+/(mac 上连续按两次shift键),打开选择框,输入reg,选择 Registry..., 勾选上 compiler.automake.allow.when.app.running。坑:最新版的 Registry 里已经没有那项了,在设置里的 Advanced Settings 里:Allow auto-make to start even if developed application is currently running。

SpringBoot Controller

控制器 controller:

  • @Controller,返回页面,通常与模版引擎一起使用
  • @RestController,返回json数据,前后端分离

MVC模式:

  • Model:模型,存储数据
  • Controller:控制器,协调控制
  • View:视图,显示数据

大白话理解:Model => 数据库,View => 前端,Controller => 后端

常用请求注解:

  • @RequestMapping
  • @GetMapping
  • @PostMapping

SpringBoot文件上传+拦截器

静态资源放到 src/main/resources/static 目录下,就能直接访问,和前端里的 public 目录类似。

如果要修改,在 application.properties 中定义过滤规则和静态资源位置

spring.mvc.static-path-pattern=/static/**
spring.web.resources.static-locations=classpath:/static/

Spring Boot工程嵌入的 tomcat 限制了每个文件最大为1M,单次请求的文件的总数不能大于10M,如果要修改配置,在 application.properties 中:

spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=20MB

前端用 input 表单或 postman 模拟 multipart/form-data 上传文件,注意文件的名字要跟接口里定义的 MultipartFile 的参数名一致,下面代码用的 file,再通过 transferTo 方法可将文件写入到磁盘中,类似 nodejs 中的 fs.writeFile。

@RestController
public class FillController {
   
    // 上传文件目录
    private static final String UPLOAD_FOLDER = System.getProperty("user.dir") + "/upload/";

    // 上传文件
    @PostMapping("upload")
    public String upload(String nickname, MultipartFile file) throws IOException {
   
        System.out.println("文件大小:" + file.getSize());
        System.out.println(file.getContentType());
        System.out.println(file.getOriginalFilename());
        saveFile(file);
        return "上传文件成功";
    }

    public void saveFile(MultipartFile file) throws IOException {
   
        System.out.println("项目目录:" + System.getProperty("user.dir"));
        System.out.println("文件上传目录:" + UPLOAD_FOLDER);

        File upDir = new File(UPLOAD_FOLDER);
        // 目录不存在就新建一个
        if (!upDir.exists()) {
   
            upDir.mkdir();
        }

        File f = new File(UPLOAD_FOLDER + file.getOriginalFilename());
        // 通过transferTo方法写入文件,类似 node 里的 fs.writeFile
        file.transferTo(f);
    }
}

文件保存目录也可以用 HttpServletRequest 对象的 getServletContext().getRealPath("/upload/") 去创建,此目录是服务器上的路径,每次重启服务器会发生变化,直接将此路径复制到浏览器中是可以直接打开的。通过此路径在额外配置下静态目录,这样就可以直接通过项目访问到上传的文件。

也可以通过 ClassUtils.getDefaultClassLoader().getResource("").getPath() + "static/" 直接将文件存入 static 目录中。

目录
相关文章
|
9天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
60 13
|
14天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
48 10
|
8天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
45 2
|
20天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
17天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
19天前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
36 0
|
Java Spring
SpringBoot 开发秘籍 - 启动时配置校验
在项目开发过程中,某个功能需要依赖在配置文件中配置的参数。
203 0
SpringBoot 开发秘籍 - 启动时配置校验
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
178 1
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
116 62
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
81 2