用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 目录中。

相关文章
|
23天前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
23天前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
42 0
|
2月前
|
安全 Java 数据库
Java 项目实战病人挂号系统网站设计开发步骤及核心功能实现指南
本文介绍了基于Java的病人挂号系统网站的技术方案与应用实例,涵盖SSM与Spring Boot框架选型、数据库设计、功能模块划分及安全机制实现。系统支持患者在线注册、登录、挂号与预约,管理员可进行医院信息与排班管理。通过实际案例展示系统开发流程与核心代码实现,为Java Web医疗项目开发提供参考。
111 2
|
2月前
|
JavaScript 安全 前端开发
Java开发:最新技术驱动的病人挂号系统实操指南与全流程操作技巧汇总
本文介绍基于Spring Boot 3.x、Vue 3等最新技术构建现代化病人挂号系统,涵盖技术选型、核心功能实现与部署方案,助力开发者快速搭建高效、安全的医疗挂号平台。
147 3
|
2月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
202 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
2月前
|
移动开发 Cloud Native 安全
Java:跨平台之魂,企业级开发的磐石
Java:跨平台之魂,企业级开发的磐石
《Springboot极简教程》运行SpringBoot程序
http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-running-your-application.html
771 0
|
23天前
|
前端开发 安全 Java
基于springboot+vue开发的会议预约管理系统
一个完整的会议预约管理系统,包含前端用户界面、管理后台和后端API服务。 ### 后端 - **框架**: Spring Boot 2.7.18 - **数据库**: MySQL 5.6+ - **ORM**: MyBatis Plus 3.5.3.1 - **安全**: Spring Security + JWT - **Java版本**: Java 11 ### 前端 - **框架**: Vue 3.3.4 - **UI组件**: Element Plus 2.3.8 - **构建工具**: Vite 4.4.5 - **状态管理**: Pinia 2.1.6 - **HTTP客户端
145 4
基于springboot+vue开发的会议预约管理系统
|
5月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
473 1