SpringBoot使用入门和案例实现

news2024/11/17 7:50:51

目录

  • 1. 在pom.xml中添加依赖
  • 2. 编辑resources/application.properties
  • 3. 编写springboot的主程序
  • 4. 编写Controller程序
  • 5. IDEA本地测试
  • 6. 打包上传到服务器运行

1. 在pom.xml中添加依赖

步骤如下:

  1. 添加springboot的parent依赖
  2. 添加springboot的starter-web依赖。还有很多针对其它场景的starter启动器
  3. 修改mysql的版本号
  4. 添加springboot的打包插件

内容如下:

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.hh</groupId>
    <artifactId>springbootTest</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
    </parent>

    <properties>
        <!-- 修改mysql的版本号 -->
        <mysql.version>8.0.25</mysql.version>
    </properties>

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

    <build>
        <plugins>
		<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>${shade.plugin.version}</version>
				<dependencies>
					<dependency>
						<groupId>org.springframework.boot</groupId>
						<artifactId>spring-boot-maven-plugin</artifactId>
						<version>${spring.boot.version}</version>
					</dependency>
				</dependencies>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<artifactSet>
								<excludes>
									<exclude></exclude>
								</excludes>
							</artifactSet>
							<filters>
								<filter>
									<artifact>*:*</artifact>
									<excludes>
										<exclude>META-INF/*.SF</exclude>
										<exclude>META-INF/*.RSA</exclude>
										<exclude>META-INF/*.DSA</exclude>
										<!-- 解决java -classpath ... class运行错误:ERROR StatusLogger Unrecognized format specifier -->
										<exclude>**/Log4j2Plugins.dat</exclude>
									</excludes>
								</filter>
							</filters>
							<transformers>
								<transformer
										implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
									<resource>META-INF/spring.handlers</resource>
									<resource>reference.conf</resource>
								</transformer>
								<transformer
										implementation="org.springframework.boot.maven.PropertiesMergingResourceTransformer">
									<resource>META-INF/spring.factories</resource>
								</transformer>
								<transformer
										implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
									<resource>META-INF/spring.schemas</resource>
								</transformer>
								<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
									<mainClass></mainClass>
									<!-- 解决: WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance -->
									<manifestEntries>
										<Multi-Release>true</Multi-Release>
									</manifestEntries>
								</transformer>
							</transformers>
						</configuration>
					</execution>
				</executions>
			</plugin>
        </plugins>
    </build>

</project>

2. 编辑resources/application.properties

该配置文件的名称是约定好的。修改tomcat的端口号,如下所示:

# 修改tomcat的端口号
server.port = 8088

配置文件的值会绑定对应的类上,类会在IOC容器中创建对象

也可以定义配置文件application.yaml。会和application.properties进行配置合并,但application.properties的优先级更高

3. 编写springboot的主程序

注解说明:

  • @SpringBootApplication:表明这是一个springboot应用。会自动扫描同一目录下的其它所有文件夹和文件

如下所示:

package com.hh.springbootTest;

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

// springboot的程序入口,表明这是一个springboot应用
// 默认会自动扫描同一目录下的其它所有文件夹和文件
@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {

        SpringApplication.run(MyApplication.class, args);

    }
}

4. 编写Controller程序

注解说明:

  • @Controller:表明这是一个控制器
  • @ResponseBody:表示请求该地址会有数据返回
  • @RequestMapping:表示请求的具体地址
  • @RestController:等同于@ResponseBody + @Controller

如下所示:

package com.hh.springbootTest.myController;

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

// @ResponseBody       // 也可以放在函数上面,单独修饰函数
// @Controller

@RestController     // 等同于:@ResponseBody + @Controller
public class HelloController {

    @RequestMapping("/hello")
    public String helloHandle() {
        return "hello springboot";
    }

}

5. IDEA本地测试

直接运行MyApplication.java程序,然后用浏览器访问http://localhost:8088/hello。显示的效果如下:

IDEA本地测试

6. 打包上传到服务器运行

mvn clean package命令进行打包,然后将jar包上传到服务器,用java命令java -jar springbootTest-1.0-SNAPSHOT.jar以前台运行的方式启动应用

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

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

相关文章

osip开源库在windows平台上编译

背景 之前写过一篇关于sip协议栈选型的文章&#xff0c;最终采用了osip 2.3.6版本&#xff0c;文章中说明了为什么采用osip协议栈&#xff0c;以及为什么采用2.3.6版本。现在Linux上的产品已经基本满足需求了&#xff0c;接下来我们打算开发一套客户端和服务端对接&#xff0c…

电子邮件机器人和聊天机器人如何使您的客户支持受益?

当我们谈论客户支持中的人工智能时&#xff0c;通常会想到基于Web的聊天机器人。然而&#xff0c;现代人工智能的进步使电子邮件机器人成为客户支持自动化的下一个风口&#xff0c;使组织能够满足人们对于快速便捷的全渠道体验的期望。 有些人认为&#xff0c;与Facebook Mess…

“兆易创新杯”第十八届中国研究生电子设计竞赛有感

今年的电赛给我的感觉是时间真的紧张&#xff0c;可能是因为去年有疫情原因影响所以能准备的时间到七月份&#xff0c;今年不到月底就要全部出成品。我们团队一直在自研一款增强现实眼镜&#xff0c;从硬件设计到软件实现全部由我和另外两个小伙伴一起完成&#xff0c;所以就把…

matlab实现声音录制与左右声道分离

基础知识 1.MATLAB识别的常用语音信号类型&#xff1a; WAV格式 TXT格式 2.读取wav格式语音用函数&#xff1a;wavread 常用格式&#xff1a; ywavread(‘语音文件名’) [y,fs]wavread (‘语音文件名’) 用于读取语音,采样值放在向量y中,fs表示采样频率。 3.读取wav格式语音用…

动态代理与Spring Aop

动态代理 JDK 动态代理 使用JAVA反射包中的类和接口实现动态代理的功能&#xff0c;JAVA.lang.reflect包&#xff1b;主要是三个类&#xff1a; InvocationHandler,Method,Proxy; CGLIB动态代理&#xff0c;第三方工具类库&#xff0c;创建代理对象&#xff0c;cglib的原理是继…

城市内涝监测需要什么设备

近年来&#xff0c;随着城市化进程的加快&#xff0c;城市内涝问题愈发突出。强降雨、缺乏排水设施和过度的人类活动等因素&#xff0c;导致城市内涝灾害频发。内涝不仅给居民生活和财产安全带来威胁&#xff0c;还对城市基础设施和经济发展造成严重影响。 为了应对城市内涝灾…

spring中事务失效的情况(常见的5种)

1.多线程调用 从上面的例子中&#xff0c;我们可以看到事务方法add中&#xff0c;调用了事务方法doOtherThing&#xff0c;但是事务方法doOtherThing是在另外一个线程中调用的。 这样会导致两个方法不在同一个线程中&#xff0c;获取到的数据库连接不一样&#xff0c;从而是两…

centos7宝塔项目配置步骤

0、 1、 2、前面两个空格去掉勾 3、window 配置虚拟机 对应的域名

Django高级扩展之celery使用

Celery是一个简单、灵活、可靠的分布式系统&#xff0c;用于处理大量消息&#xff0c;同时为操作提供维护此类系统所需的工具。是一个专注于实时处理的任务队列&#xff0c;同时还支持任务调度。 目录 应用场景 问题 解决 celery架构图 安装 配置celery Settings.py配置…

CVE-2022-25099

文章目录 CVE-2022-25099一、漏洞介绍二、渗透步骤1、打开网站2、登录后台3、文件上传4、查看flag值 CVE-2022-25099 一、漏洞介绍 WBCE CMS v1.5.2 RCE。 WBCE CMS v1.5.2 /language/install.php 文件存在漏洞&#xff0c;攻击者可精心构造文件上传造成RCE。 二、渗透步骤 1…

宝塔面板实用教程(1):10分钟部署在线客服系统

客服系统发布以来&#xff0c;一直有朋友询问如何在宝塔面板中安装部署&#xff0c;开始我一直认为参考 Linux 版的安装教程就可以了&#xff0c;一直没有专门写宝塔环境的教程。这段时间来咨询的朋友越来越多&#xff0c;经过了解&#xff0c;我才知道宝塔面板的普及率有多高&…

SSM流浪动物救助网站-计算机毕设 附源码82131

SSM流浪动物救助网站 摘 要 随着生活水平的持续提高和家庭规模的缩小&#xff0c;宠物已经成为越来越多都市人生活的一部分&#xff0c;随着宠物的增多&#xff0c;流浪的动物的日益增多&#xff0c;中国的流浪动物领养和救助也随之形成规模&#xff0c;同时展现巨大潜力。本次…

XML文件

xml文件 类似于html那种标签语言 但是用途却大不一样&#xff0c;xml一般用于小型数据传输&#xff08;存储数据&#xff09; xml文件作用 xml语法规则 一个简单的xml文件案例 xml解析 解析思想 所谓的xml解析 也就是从xml文件提取数据 解析思想&#xff1a;前端的文档对…

【C++实现】RPC框架的简单实现介绍

文章目录 介绍为什么使用protobufprotobuf的service rpc 框架发布方的上层使用逻辑框架的提供方逻辑Rpc调用方框架实现客户端上层框架使用重新梳理简单聊一下RpcController 引入缓冲区队列zookeeper总结 介绍 以下博客覆盖内容&#xff1a; 集群和分布式概念原理&#xff1b; …

安科瑞智能照明系统在绿色建筑中的应用与产品选型

【摘要】&#xff1a;智能照明系统应用在智能建筑中不仅能营造出舒适的生活、工作环境以及现代化的管理方式而且要具有一定的节能效果。给出了智能照明和传统照明系统的比较并分析了智能照明系统的节能。 【关键字】&#xff1a;智能建筑&#xff1b;智能照明&#xff1b;节能…

什么样的口译是好的?交传和同传的评估标准是什么?

众所周知&#xff0c;交传和同传是口译的两种高级形式&#xff0c;难度比较大&#xff0c;一般应用于国际会议、商务洽谈、重大新闻发布会等领域。那么&#xff0c;如何做好交传和同传翻译&#xff0c;什么样的口译是好的&#xff0c;交传和同传的评估标准是什么&#xff0c;北…

密码学obe软件思路

匿名通信与暗网研究综述 匿名通信系统是一种建立在Internet之上综合利用数据转发、内容加密、流量混淆等多种技术隐藏通信实体关系和内容的覆盖网络.由于匿名通信主体难以被追踪定位,匿名通信网络中各类匿名滥用问题层出不穷,而其中隐藏服务机制更是被用于构建充斥着各种非法…

Integer移位算法

常用移位算法 给定值最高位1的权重给定值最低位1的权重给定值高位连续零的个数给定值低位连续零个数 给定值最高位1的权重 也就是给定值左侧。返回给定值左侧最大的2的次幂 //获取i最高位1代表的2次幂&#xff0c;最高位1代表的权值public static int highestOneBit(int i) …

轻量化技术 | 大面积模型秒加载、TB级数据处理能力、多平台便捷展示应用...

实景三维技术的发展日新月异&#xff0c;但在应用上却一直无法深入&#xff0c;尤其是在大场景三维模型展示与应用过程中&#xff0c;不可避免地会遇到占内存、渲染慢、加载卡顿、模型塌陷等情况&#xff0c;这是由于数据格式类型多、内存占比大、模型体量大。 对此&#xff0…

C++ STL关联式容器和无序容器(哈希容器)

文章目录 5.2 C STL关联式容器5.2.1 C STL map容器5.2.2 C STL multimap容器5.2.3 C STL set容器5.2.2 C STL multiset容器 5.3 C STL无序容器&#xff08;哈希容器&#xff09; 参考 5.2 C STL关联式容器 关联式容器在存储元素值的同时&#xff0c;会为各元素额外再配备一个值…