亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文教你Java如何快速構(gòu)建項(xiàng)目骨架

 更新時(shí)間:2025年05月22日 11:16:41   作者:向哆哆  
在?Java?項(xiàng)目開發(fā)過程中,構(gòu)建項(xiàng)目骨架是一項(xiàng)繁瑣但又基礎(chǔ)重要的工作,Java?領(lǐng)域有許多代碼生成工具可以幫助我們快速完成這一任務(wù),下面就跟隨小編一起來了解下吧

在 Java 項(xiàng)目開發(fā)過程中,構(gòu)建項(xiàng)目骨架是一項(xiàng)繁瑣但又基礎(chǔ)重要的工作。幸運(yùn)的是,Java 領(lǐng)域有許多代碼生成工具可以幫助我們快速完成這一任務(wù),大大提高開發(fā)效率。

一、代碼生成工具概述

常用 Java 代碼生成工具簡介

1.MyBatis Generator

MyBatis Generator 是專為 MyBatis 框架設(shè)計(jì)的代碼生成工具。它可以根據(jù)數(shù)據(jù)庫表結(jié)構(gòu)自動(dòng)生成對(duì)應(yīng)的 Mapper 接口、XML 映射文件、實(shí)體類等代碼。例如,當(dāng)我們有一個(gè) “users” 表,包含 “id”“name”“age” 等字段,使用 MyBatis Generator 可以快速生成 User 實(shí)體類,其中包含這些字段以及對(duì)應(yīng)的 getter 和 setter 方法;同時(shí)生成 UserMapper 接口,里面會(huì)有諸如 insert、delete、update、select 等基本的數(shù)據(jù)庫操作方法聲明,以及對(duì)應(yīng)的 UserMapper.xml 文件,用于書寫 MyBatis 的映射 SQL 語句。

2.Spring Initializr

Spring Initializr 是 Spring 官方提供的一個(gè)在線項(xiàng)目初始化工具。它可以幫助開發(fā)者快速生成基于 Spring Boot 的項(xiàng)目骨架。我們只需要在網(wǎng)頁上選擇項(xiàng)目的基本信息,如項(xiàng)目名稱、版本、依賴(如 Spring Web、Spring Data JPA 等),然后點(diǎn)擊生成按鈕,就會(huì)下載一個(gè)完整的項(xiàng)目目錄結(jié)構(gòu),里面包含了構(gòu)建文件(如 Maven 的 pom.xml 或 Gradle 的 build.gradle)、基礎(chǔ)的配置文件(application.properties)、主程序入口類等。

3.FreeMarker(作為代碼生成模板引擎)

FreeMarker 是一個(gè)基于模板的生成代碼工具。它本身不是專門為 Java 代碼生成設(shè)計(jì)的,但可以結(jié)合 Java 程序靈活地用于代碼生成場(chǎng)景。例如,我們可以定義一套代碼模板,如 Java 服務(wù)類的模板,規(guī)定好類的結(jié)構(gòu)、方法的格式等。然后通過 Java 程序讀取數(shù)據(jù)庫表信息或其他元數(shù)據(jù),將這些數(shù)據(jù)填充到 FreeMarker 模板中,就可以生成對(duì)應(yīng)的 Java 代碼文件,如根據(jù)表字段生成實(shí)體類的字段以及相關(guān)的操作方法。

代碼生成工具的優(yōu)勢(shì)

1.提高開發(fā)效率

減少了手動(dòng)編寫重復(fù)、模式化代碼的工作量。例如,對(duì)于數(shù)據(jù)庫持久層代碼,像實(shí)體類、Mapper 接口等,通過代碼生成工具可以瞬間生成,而手動(dòng)編寫這些代碼可能需要花費(fèi)較多時(shí)間和精力,并且容易出錯(cuò)。

2.保證代碼一致性

按照統(tǒng)一的模板生成代碼,可以確保代碼風(fēng)格、結(jié)構(gòu)和命名規(guī)范的一致性。這對(duì)于團(tuán)隊(duì)開發(fā)來說尤為重要,有助于提高代碼的可讀性和可維護(hù)性。

二、使用 MyBatis Generator 構(gòu)建項(xiàng)目骨架

搭建 MyBatis Generator 環(huán)境

1.添加依賴

如果我們使用 Maven 構(gòu)建項(xiàng)目,在項(xiàng)目的 pom.xml 文件中添加 MyBatis Generator 的依賴:

<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.4.1</version>
</dependency>

2.配置 MyBatis Generator 配置文件

創(chuàng)建一個(gè) generatorConfig.xml 文件,用于配置數(shù)據(jù)庫連接信息、代碼生成的目標(biāo)位置、模板等。示例配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
  <!-- 數(shù)據(jù)庫連接信息 -->
  <context id="DB2Tables" targetRuntime="MyBatis3Simple">
    <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                    connectionURL="jdbc:mysql://localhost:3306/your_database"
                    userId="root"
                    password="password">
    </jdbcConnection>

    <!-- 生成的實(shí)體類等代碼的目標(biāo)位置 -->
    <javaModelGenerator targetPackage="com.example.entity" targetProject="src/main/java">
    </javaModelGenerator>

    <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
    </sqlMapGenerator>

    <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java">
    </javaClientGenerator>

    <!-- 指定要生成代碼的數(shù)據(jù)庫表 -->
    <table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
    </table>
  </context>
</generatorConfiguration>

運(yùn)行 MyBatis Generator 生成代碼

1.編寫運(yùn)行代碼的 Java 程序

創(chuàng)建一個(gè) Java 類,使用 MyBatis Generator 的 API 加載配置文件并生成代碼:

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class Generator {
    public static void main(String[] args) {
        List<String> warnings = new ArrayList<>();
        boolean overwrite = true;
        File configFile = new File("generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = null;
        try {
            config = cp.parseConfiguration(configFile);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            myBatisGenerator.generate(null);
        } catch (Exception e) {
            e.printStackTrace();
        }

        for (String warning : warnings) {
            System.out.println(warning);
        }
    }
}

2.查看生成的代碼

運(yùn)行上述 Java 程序后,在指定的目標(biāo)位置會(huì)自動(dòng)生成 User 實(shí)體類、UserMapper 接口和 UserMapper.xml 文件。例如,User 實(shí)體類代碼如下:

public class User {
    private Integer id;

    private String name;

    private Integer age;

    // getter 和 setter 方法
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

三、使用 Spring Initializr 構(gòu)建項(xiàng)目骨架

在 Spring Initializr 網(wǎng)頁端操作

1.訪問 Spring Initializr 網(wǎng)址

打開瀏覽器,訪問https://start.spring.io/。

2.填寫項(xiàng)目基本信息

在頁面上填寫項(xiàng)目的基本信息,如 Group(項(xiàng)目的 Maven GroupId)、Artifact(項(xiàng)目的 Maven ArtifactId,通常為項(xiàng)目名稱)、Version(項(xiàng)目版本)、Project Metadata(項(xiàng)目元數(shù)據(jù),如名稱、描述等)。

選擇項(xiàng)目使用的構(gòu)建工具,如 Maven 或 Gradle,以及 Java 版本。

3.添加依賴

點(diǎn)擊 “Dependencies” 下拉菜單,選擇所需的依賴。例如,如果我們是要構(gòu)建一個(gè) Web 應(yīng)用,就選擇 “Spring Web”;如果是需要操作關(guān)系型數(shù)據(jù)庫,就添加 “Spring Data JPA” 以及對(duì)應(yīng)的數(shù)據(jù)庫驅(qū)動(dòng)依賴(如 “MySQL Driver”)。

4.生成項(xiàng)目

點(diǎn)擊 “Generate” 按鈕后,網(wǎng)站會(huì)生成一個(gè)壓縮包。下載并解壓后,我們就可以得到一個(gè)完整的 Spring Boot 項(xiàng)目骨架。

查看生成的項(xiàng)目結(jié)構(gòu)

1.構(gòu)建文件

對(duì)于 Maven 項(xiàng)目,生成的 pom.xml 文件包含了所有選定的依賴。例如,添加了 Spring Web 和 Spring Data JPA 以及 MySQL Driver 依賴后的 pom.xml 部分內(nèi)容如下:

<?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>3.1.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>17</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-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
</project>

2.主程序入口類

生成的主程序入口類非常簡單,包含一個(gè) main 方法,通過 Spring Boot 的 SpringApplication.run() 方法啟動(dòng)應(yīng)用。示例代碼如下:

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);
    }

}

四、使用 FreeMarker 構(gòu)建項(xiàng)目骨架

引入 FreeMarker 依賴

Maven 依賴配置

在項(xiàng)目的 pom.xml 文件中添加 FreeMarker 的依賴:

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.32</version>
</dependency>

創(chuàng)建代碼生成模板

定義實(shí)體類模板(entity.ftl)

例如,以下是一個(gè)簡單的實(shí)體類模板,用于根據(jù)表字段生成 Java 實(shí)體類代碼:

package ${package}.entity;

public class ${className} {
    <#list table.columns as column>
    // ${column.comments}
    private ${column.javaType} ${column.javaField};

    public ${column.javaType} get${column.javaCap}() {
        return this.${column.javaField};
    }

    public void set${column.javaCap}(${column.javaType} ${column.javaField}) {
        this.${column.javaField} = ${column.javaField};
    }
    </#list>
}

結(jié)合 Java 程序生成代碼

1.讀取數(shù)據(jù)庫表信息

編寫 Java 程序,通過 JDBC 或其他數(shù)據(jù)庫訪問方式讀取數(shù)據(jù)庫表的元數(shù)據(jù),包括表名、字段名、字段類型、字段注釋等信息。然后將這些信息封裝成一個(gè)數(shù)據(jù)模型,用于填充到 FreeMarker 模板中。

.2使用 FreeMarker 生成代碼

示例代碼如下:

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

public class CodeGenerator {
    public static void main(String[] args) {
        // 配置 FreeMarker
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_32);
        try {
            // 設(shè)置模板文件所在的目錄
            cfg.setDirectoryForTemplateLoading(new File("templates"));
            // 加載模板
            Template template = cfg.getTemplate("entity.ftl");
            // 創(chuàng)建數(shù)據(jù)模型
            Map<String, Object> dataModel = new HashMap<>();
            dataModel.put("package", "com.example");
            dataModel.put("className", "User");
            dataModel.put("table", getTableInfo());
            // 輸出代碼
            Writer out = new FileWriter(new File("src/main/java/com/example/entity/User.java"));
            template.process(dataModel, out);
            out.close();
        } catch (IOException | TemplateException e) {
            e.printStackTrace();
        }
    }

    // 模擬獲取表信息的方法
    public static Table getTableInfo() {
        Table table = new Table();
        table.setName("users");
        // 添加字段信息
        Column column1 = new Column();
        column1.setName("id");
        column1.setJavaType("Integer");
        column1.setJavaField("id");
        column1.setJavaCap("Id");
        column1.setComments("用戶 ID");

        Column column2 = new Column();
        column2.setName("name");
        column2.setJavaType("String");
        column2.setJavaField("name");
        column2.setJavaCap("Name");
        column2.setComments("用戶名字");

        Column column3 = new Column();
        column3.setName("age");
        column3.setJavaType("Integer");
        column3.setJavaField("age");
        column3.setJavaCap("Age");
        column3.setComments("用戶年齡");

        table.setColumns(new Column[]{column1, column2, column3});
        return table;
    }

    // Table 類用于封裝表信息
    public static class Table {
        private String name;
        private Column[] columns;

        // getter 和 setter 方法
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Column[] getColumns() {
            return columns;
        }

        public void setColumns(Column[] columns) {
            this.columns = columns;
        }
    }

    // Column 類用于封裝字段信息
    public static class Column {
        private String name;
        private String javaType;
        private String javaField;
        private String javaCap;
        private String comments;

        // getter 和 setter 方法
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getJavaType() {
            return javaType;
        }

        public void setJavaType(String javaType) {
            this.javaType = javaType;
        }

        public String getJavaField() {
            return javaField;
        }

        public void setJavaField(String javaField) {
            this.javaField = javaField;
        }

        public String getJavaCap() {
            return javaCap;
        }

        public void setJavaCap(String javaCap) {
            this.javaCap = javaCap;
        }

        public String getComments() {
            return comments;
        }

        public void setComments(String comments) {
            this.comments = comments;
        }
    }
}

通過這種方式,就可以根據(jù)數(shù)據(jù)庫表結(jié)構(gòu)生成相應(yīng)的 Java 實(shí)體類代碼,如根據(jù)上述代碼生成的 User 實(shí)體類代碼如下:

package com.example.entity;

public class User {
    // 用戶 ID
    private Integer id;

    // 用戶名字
    private String name;

    // 用戶年齡
    private Integer age;

    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return this.age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

五、對(duì)比不同代碼生成工具

功能對(duì)比

1.MyBatis Generator

主要針對(duì) MyBatis 持久層框架,功能聚焦在根據(jù)數(shù)據(jù)庫表生成 MyBatis 相關(guān)的代碼,如實(shí)體類、Mapper 接口、XML 映射文件等,對(duì)于非 MyBatis 項(xiàng)目或不涉及數(shù)據(jù)庫操作的代碼生成支持有限。

2.Spring Initializr

主要用于快速生成 Spring Boot 項(xiàng)目的初始骨架,側(cè)重于項(xiàng)目的整體搭建,包括構(gòu)建文件、主程序入口類等,但對(duì)于項(xiàng)目內(nèi)部具體的業(yè)務(wù)代碼(如實(shí)體類、服務(wù)類等)生成能力較弱,需要開發(fā)者進(jìn)一步手動(dòng)編碼。

3.FreeMarker(結(jié)合 Java 程序)

具有高度靈活性,可以根據(jù)需求自定義模板,生成各種類型的代碼。不僅可以生成 Java 代碼,還可以生成配置文件、HTML 頁面等。但需要開發(fā)者自己編寫讀取元數(shù)據(jù)(如數(shù)據(jù)庫表信息)的代碼以及處理模板的邏輯,相對(duì)來說開發(fā)成本較高。

易用性對(duì)比

1.MyBatis Generator

對(duì)于熟悉 MyBatis 和數(shù)據(jù)庫操作的開發(fā)者來說,配置和使用相對(duì)簡單。只需要編寫一個(gè)配置文件,通過簡單的運(yùn)行就可以生成代碼。但需要一定的 XML 配置知識(shí)來設(shè)置代碼生成的各種細(xì)節(jié)。

2.Spring Initializr

提供了非常友好的網(wǎng)頁界面,即使是初學(xué)者也可以輕松上手。只需要填寫項(xiàng)目基本信息和選擇依賴,點(diǎn)擊生成按鈕即可得到項(xiàng)目骨架。在本地使用時(shí),也有對(duì)應(yīng)的 Maven 和 Gradle 插件,方便集成到開發(fā)環(huán)境中。

3.FreeMarker(結(jié)合 Java 程序)

使用起來相對(duì)較復(fù)雜。需要先學(xué)習(xí) FreeMarker 的模板語法,同時(shí)還要開發(fā)配套的 Java 程序來讀取數(shù)據(jù)和處理模板。不過,一旦掌握了基本原理和開發(fā)模式,就可以靈活地用于各種代碼生成場(chǎng)景。

六、總結(jié)與展望

Java 代碼生成工具為我們快速構(gòu)建項(xiàng)目骨架提供了極大的便利。MyBatis Generator 在持久層代碼生成方面表現(xiàn)出色;Spring Initializr 是搭建 Spring Boot 項(xiàng)目的利器;FreeMarker 則提供了靈活自定義的代碼生成方式。在實(shí)際項(xiàng)目開發(fā)中,我們可以根據(jù)項(xiàng)目的技術(shù)選型和具體需求,選擇合適的代碼生成工具,或者結(jié)合多種工具來高效地完成項(xiàng)目骨架的構(gòu)建。隨著技術(shù)的不斷發(fā)展,未來的代碼生成工具可能會(huì)更加智能化、自動(dòng)化,能夠更好地理解業(yè)務(wù)邏輯,生成更加高質(zhì)量和貼合實(shí)際需求的代碼,進(jìn)一步提升軟件開發(fā)的效率和質(zhì)量。

到此這篇關(guān)于一文教你Java如何快速構(gòu)建項(xiàng)目骨架的文章就介紹到這了,更多相關(guān)Java構(gòu)建項(xiàng)目骨架內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Spring 中 @PostConstruct 注解使用原理及常見場(chǎng)景

    Java Spring 中 @PostConstruct 注解使用原理及常見場(chǎng)景

    在 Java Spring 中,@PostConstruct 注解是一個(gè)非常實(shí)用的功能,它允許開發(fā)者在 Spring 容器完全初始化 Bean 后執(zhí)行某些操作,本文將詳細(xì)介紹 @PostConstruct 注解的使用,包括其原理、常見場(chǎng)景和代碼示例,
    2025-04-04
  • Spring boot實(shí)現(xiàn)上傳文件到本地服務(wù)器

    Spring boot實(shí)現(xiàn)上傳文件到本地服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了Spring boot實(shí)現(xiàn)上傳文件到本地服務(wù)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Java?垃圾回收超詳細(xì)講解記憶集和卡表

    Java?垃圾回收超詳細(xì)講解記憶集和卡表

    卡表就是記憶集的一種具體實(shí)現(xiàn),它定義了記憶集的記錄精度、與堆內(nèi)存的映射關(guān)系等。?關(guān)于卡表與記憶集的關(guān)系,不妨按照J(rèn)ava語言中HashMap與Map的關(guān)系來類比理解。記憶集是一種用于記錄從非收集區(qū)域指向收集區(qū)域的指針集合的抽象數(shù)據(jù)結(jié)構(gòu)
    2022-04-04
  • 如何在Spring?Boot微服務(wù)使用ValueOperations操作Redis集群String字符串

    如何在Spring?Boot微服務(wù)使用ValueOperations操作Redis集群String字符串

    這篇文章主要介紹了在Spring?Boot微服務(wù)使用ValueOperations操作Redis集群String字符串類型數(shù)據(jù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • 微信小程序獲取手機(jī)號(hào)的完整實(shí)例(Java后臺(tái)實(shí)現(xiàn))

    微信小程序獲取手機(jī)號(hào)的完整實(shí)例(Java后臺(tái)實(shí)現(xiàn))

    我們?cè)谧鲂〕绦蜷_發(fā)的過程中,經(jīng)常會(huì)涉及到用戶身份的問題,最普遍的就是我們要獲取用戶的手機(jī)號(hào)碼,下面這篇文章主要給大家介紹了關(guān)于微信小程序獲取手機(jī)號(hào)的完整實(shí)例,后臺(tái)由Java實(shí)現(xiàn),需要的朋友可以參考下
    2022-06-06
  • Java中instanceof關(guān)鍵字實(shí)例講解

    Java中instanceof關(guān)鍵字實(shí)例講解

    大家好,本篇文章主要講的是Java中instanceof關(guān)鍵字實(shí)例講解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Java圖形界面超實(shí)用使用教程

    Java圖形界面超實(shí)用使用教程

    在Java編程中圖形界面應(yīng)用程序是非常常見和重要的一部分,下面這篇文章主要給大家介紹了關(guān)于Java圖形界面的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • 解決springboot引入swagger2不生效問題

    解決springboot引入swagger2不生效問題

    這篇文章主要為大家介紹了解決springboot引入swagger2不生效問題的方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Spring Security 安全框架應(yīng)用原理解析

    Spring Security 安全框架應(yīng)用原理解析

    這篇文章主要介紹了Spring Security 安全框架應(yīng)用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • springboot實(shí)現(xiàn)文件上傳步驟解析

    springboot實(shí)現(xiàn)文件上傳步驟解析

    這篇文章主要介紹了springboot實(shí)現(xiàn)文件上傳步驟解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12

最新評(píng)論