1 - springboot

news2024/11/30 0:44:36

创建springboot项目的方式有很多,一般通过IDEA直接创建。

参考:创建SpringBoot项目的四种方式 - Linqylin - 博客园

代码结构:

 

代码示例:

创建项目的时候导入了web依赖。

pom.xml:

<?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.0.0</version> - 要求jdk17以上,故减低版本-->
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <!--项目元数据信息,也就是Maven项目的基本元素-->
    <!--坐标:g 、 a 、v,后面两个不用也行-->
    <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>1.8</java.version>
    </properties>

    <dependencies>
        <!--web依赖:tomcat、dispatcherServlet.xml .....-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--共性:-->
        <!--spring-boot-starter: 所有的springboot依赖都是使用这个开头的-->

        <!--单元测试(用Junit也是可以的)-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <!-- build —— 打jar包插件的-->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

打jar包的方式:

右侧——>Maven :  双击package 即可打jar包。

 启动项 : ——   DemoApplication 

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

// 本身就是Spring的一个组件

// 程序的主入口
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

测试类:DemoApplicationTests

package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class DemoApplicationTests {

    @Test
    void contextLoads() {
    }
}

controller文件夹下的 HelloController 类:

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * springboot的核心原理:自动装配!!! ——  用起来就非常简单了
 */

//@Controller
// 为了让它是一个返回字符串,改为:
@RestController
public class HelloController {

    // 这就是一个接口:http://localhost:8080/hello
    @RequestMapping("/hello")
    public String hello(){
        // 调用业务,接收前端的参数
        return "Hello,World!";
    }
}

上面还有一种写法(见下面)。

再创建一个java项目:

pom.xml 

<?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>2.7.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.zhoulz</groupId>
    <artifactId>springboot-01-helloworld</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-01-helloworld</name>
    <description>zhoulz first springboot project</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--<version>2.0.1.RELEASE</version> 版本号可以不要,它会继承父依赖的-->
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

controller文件夹下的 HelloController 类:

(区别于上面的第二种写法)

package com.zhoulz.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @auther zhoulz
 * @description: com.zhoulz
 */

// 修改代码要重启项目,或者不重启也可以,通过“热部署”的方式(需要(创建项目时)导入相关依赖)

@Controller
@RequestMapping("/hello")
public class HelloController {
    @GetMapping("/hello")
    @ResponseBody
    public String hello(){
        return "Hello,zhoulz!";
    }
}

resources文件夹下:

application.properties文件:

如何更改项目的端口号?

# 更改项目的端口号
server.port=8081
# 更改banner - 图标? —— 见resources文件夹下的banner.txt文件

如何更改banner?

:在resources下新建banner.txt文件,放入自己定义的图标。

有 springboot banner在线生成网站 :https://www.bootschool.net/ascii-art

banner.txt文件:

 ████        █████        ████████     █████ █████  
░░███      ███░░░███     ███░░░░███   ░░███ ░░███   
 ░███     ███   ░░███   ░░░    ░███    ░███  ░███ █ 
 ░███    ░███    ░███      ███████     ░███████████ 
 ░███    ░███    ░███     ███░░░░      ░░░░░░░███░█ 
 ░███    ░░███   ███     ███      █          ░███░  
 █████    ░░░█████░     ░██████████          █████  
░░░░░       ░░░░░░      ░░░░░░░░░░          ░░░░░   
                                                    
                         大吉大利            永无BUG  

重新启动服务即可。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

点成分享 | QBC干式血液分析仪打开血常规检测的新天地

一、背景 全血细胞计数&#xff08;complete blood count, CBC&#xff09;&#xff0c;又称血常规、血象、血细胞分析、血细胞计数或血液细胞计数&#xff0c;是医生或其他医学专业人员常常申请的一种组合检验项目。通过全血细胞计数&#xff0c;医生可以观察到血细胞的增多、…

【Java 实战】通过ElasticSearch实现全局搜索功能

前言 在电商项目中&#xff0c;我们经常会使用到全局搜索来查询自己想要购买的商品&#xff0c;而商品的数量非常多&#xff0c;而且分类繁杂。 面对这样复杂的搜索业务和数据量&#xff0c;使用传统数据库搜索就显得力不从心&#xff0c;一般我们都会使用全文检索技术&#…

Vite的原理

背景 这里的背景介绍会从与Vite紧密相关的两个概念的发展史说起&#xff0c;一个是JavaScript的模块化标准&#xff0c;另一个是前端构建工具。 共存的模块化标准 为什么JavaScript会有多种共存的模块化标准&#xff1f;因为js在设计之初并没有模块化的概念&#xff0c;随着前…

js将后端返回的文件流导出为excel,并自定义下载文件名

一. 需求 后台管理系统&#xff0c;常会出现导出excel表格功能&#xff1b;点击导出按钮&#xff0c;请求后端接口&#xff0c;需要将接口返回的文件流导出为excel&#xff0c;实现前端下载excel文件。 但是&#xff0c;返回的数据获取 response 时出现乱码&#xff0c;如图&a…

CSS复合样式id选择器class选择器

1、CSS复合样式 单一样式&#xff1a;一个CSS属性只控制一种样式&#xff0c;叫做单一样式。复合样式&#xff1a; 一个CSS属性控制多种样式&#xff0c;叫做复合样式。 background、border、font 无序&#xff1a;background、border有序&#xff1a;font&#xff08;先size、…

用JS实现:图片压缩、图片加密

本文将用JavaScript实现两个颇有技术含量的功能&#xff1a;图片压缩、图片加密。 最终效果&#xff1a;可实现将任意图片加密、压缩&#xff0c;并保存到一个独立的html页面中&#xff0c;输入正确的密码&#xff0c;才能看到原图。 第一步、压缩图片 技术原理 将图片读入c…

SDL 软件安全开发周期 Security Development Lifecycle

本文参考多篇文章写作而成&#xff0c;出处在文末注明。 SDL的是安全开发生命周期&#xff0c;Security Development Lifecycle。由微软最早提出&#xff0c;是一种专注于软件开发的安全保障流程。为实现保护最终用户为目标&#xff0c;它在软件开发流程的各个阶段引入安全和隐…

C语言中如何逆序任意输出的字符串

C语言中如何逆序任意输出的字符串的三种方法&#xff1a; 一 设置两个指针&#xff0c;分别指向字符串的头部和尾部&#xff0c;然后交换两个指针所指的字符&#xff0c;并向中间移动指针直到交叉。 char *Reverse(char *s){ // p指向字符串头部 char *p s ; // q指向字符串尾…

扩展函数工具类篇(Kotlin)

引言&#xff1a;本文仅记录自己项目中使用到的扩展类、则需使用&#xff01;&#xff08;均为kt文件&#xff09; 一、ActivityExpand /*** 启动Activity*/ fun AppCompatActivity.startPager(actClass: Class<*>) {startActivity(Intent(this, actClass)) }/*** 启动…

微软推出适用于 Linux 的 Windows 子系统

导读微软宣布正式推出适用于 Linux 的 Windows 子系统 (WSL)&#xff0c;现在可以在 Microsoft Store 中以完整形式购买。据微软称&#xff0c;WSL 以前以预览形式提供&#xff0c;允许开发人员使用他们最喜欢的笔记本电脑进行编程&#xff0c;以运行 GNU/Linux 环境&#xff0…

拓扑排序(Topological Sorting)

题目描述 题目链接&#xff1a;剑指 Offer II 113. 课程顺序 - 力扣&#xff08;Leetcode&#xff09; 现在总共有 numCourses 门课需要选&#xff0c;记为 0 到 numCourses-1。 给定一个数组 prerequisites &#xff0c;它的每一个元素 prerequisites[i] 表示两门课程之间的…

前端给后端发送数据,后端接收

在具体的前后端分离项目中&#xff0c;我们经常会遇到点击表格中的某一行的按钮&#xff0c;获取这一行的某一项值的需求&#xff0c;前端点击拿到这个值&#xff0c;再传给后端使用 例如&#xff1a;在此例中点击同步的按钮&#xff0c;需要获取到表格中的ip地址的内容&#…

GD32F303固件库开发(17)----内部Flash读写

概述 本例程主要讲解如何对芯片自带Flash进行读写&#xff0c;用芯片内部Flash可以对一些需要断电保存的数据进行保存&#xff0c;无需加外部得存储芯片&#xff0c;本例程采用的是GD32F303ZET6主控&#xff0c;512K大小的Flash。 最近在弄ST和GD的课程&#xff0c;需要GD样片…

web前端期末大作业:基于HTML+CSS+JS外卖服务平台10页 带购物车 (web课程设计与实现)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Yolo v5源码解析笔记

一、Yolo v5文件目录树结构 二、train.py文件介绍 从main()方法&#xff0c;首先读取参数&#xff1b;其次建立YOLONet&#xff1b;然后读取训练数据&#xff1b;最后进行训练。 2.1 读取参数 部分截图 2.2 建立YOLONet YOLONet的建立是通过 yolo文件夹中的yolo_net.py文件…

游戏开发58课 性能优化

6. 卡顿优化 相信很多研发者或玩家&#xff0c;都遇到这种情况&#xff1a;游戏大部时间运行都很流畅&#xff0c;但在战斗的某些时刻或者打开某些界面会卡一下&#xff0c;甚至卡很久。这个现象就是卡顿。引发卡顿的原因有很多&#xff0c;但主要有&#xff1a; 突发大量IO。…

银河麒麟桌面V10SP1版本系统休眠唤醒鼠标键盘失效解决方法

使用银河麒麟桌面系统有时会出现系统休眠后再唤醒&#xff0c;鼠标键盘失效的问题&#xff0c;可尝试以下方法解决。 1.检查是否安装 laptop-mode-tools 工具 执行命令: dpkg -l | grep laptop-mode-tools如果执行命令无结果输出&#xff0c;表示未安装(如果已安装&#xff0…

【从零开始学习深度学习】21. 卷积神经网络(CNN)之二维卷积层原理介绍、如何用卷积层检测物体边缘

目录1. 二维互相关运算2. 自定义二维卷积层3. 卷积层的应用----图像中物体边缘检测4. 通过数据学习核数组5. 互相关运算和卷积运算6. 特征图和感受野总结卷积神经网络&#xff08;convolutional neural network&#xff09;是含有卷积层&#xff08;convolutional layer&#x…

欧克科技在深交所上市:客户集中度较高,胡坚晟为控股股东

12月12日&#xff0c;欧克科技股份有限公司&#xff08;下称“欧克科技”&#xff0c;SZ:001223&#xff09;在深圳证券交易所主板上市。本次上市&#xff0c;欧克科技的发行价格为65.58元/股&#xff0c;发行数量为1668万股&#xff0c;募资总额约为10.94亿元&#xff0c;募资…

印制电路板(PCB)设计原则和抗干扰措施

印制电路板(PCB)是电子产品中电路元件和器件的支撑件&#xff0e;它提供电路元件和器件之间的电气连接。随着电于技术的飞速发展&#xff0c;PCB的密度越来越高。PCB 设计的好坏对抗干扰能力影响很大&#xff0c;因此&#xff0c;在进行PCB 设计时&#xff0e;必须遵守PCB设计的…