当前位置: 首页 > news >正文

SpringMVC基于SpringBoot的最基础框架搭建——包含数据库连接

SpringMVC基于SpringBoot的最基础框架搭建——包含数据库连接

  • 背景
  • 目标
  • 依赖
  • 配置文件如下
  • 项目结构如下
  • 相关配置如下
  • 启动代码如下
  • Controller如下
  • 启动成功
  • 接口调用成功

背景

工作做了一段时间,回忆起之前有个公司有线下笔试,要求考生做一个什么功能,我为了省事就直接使用了自己以前魔改的项目框架,阉割了很多功能,但是整个项目结构还是保持原样。后面功能完成的还行被喊去面试了,结果被人嘲讽怎么不自己搭框架,要用别人的框架。~~(PS:你面个试重点不讲考题,你管框架干什么,搞得别人题目做出来了,框架不会搭似的)~~工作之余,来重温一下SpringBoot最基础框架搭建,在此全部分享给大家,让这些面试官无话可说。

目标

jdk1.8环境下搭建一个SpringBoot-2.3.4.RELEASE项目,包含最基础的接口功能、数据库查询功能

工具依赖
启动器spring-boot-starter
Web容器spring-boot-starter-web
数据库dynamic-datasource-spring-boot-starter-3.6.1、mybatis-plus-boot-starter-3.4.2
其他lombok-1.18.8、commons-io-2.11.0、javax.servlet-api-4.0.1
打包spring-boot-maven-plugin-2.1.1.RELEASE

依赖

整体以来如下

<?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>org.example</groupId><artifactId>test-dds</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- SpringBoot 核心包 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- SpringBoot Web容器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 动态数据源 --><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.6.1</version></dependency><!-- mysql连接 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.17</version></dependency><!-- Mybatis-Plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><!--简化实体类,用@Data代替getset方法--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version></dependency><!-- io常用工具类 --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version></dependency><!-- Java Servlet --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.1.1.RELEASE</version></plugin></plugins><finalName>${project.artifactId}</finalName></build>
</project>

配置文件如下

server:port: 8765servlet:# 应用的访问路径context-path: /tomcat:# tomcat的URI编码uri-encoding: UTF-8threads:# tomcat最大线程数,默认为200max: 800# Tomcat启动初始化的线程数,默认值25min-spare: 30
spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8datasource:dynamic:datasource:master:username: rootpassword: rooturl: jdbc:mysql://127.0.0.1:3307/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=truedriver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:global-config:db-config:id-type: autoinsert-strategy: not_nullupdate-strategy: not_null# 搜索指定包别名type-aliases-package: com.dds.test.**.domain# 配置mapper的扫描,找到所有的mapper.xml映射文件mapper-locations: classpath*:mybatis/**/*Mapper.xml# 加载全局的配置文件#  config-location: classpath:mybatis/mybatis-config.xmlconfiguration:cache-enabled: trueuse-generated-keys: truedefault-executor-type: reuselog-impl: org.apache.ibatis.logging.slf4j.Slf4jImplmap-underscore-to-camel-case: true

项目结构如下

在这里插入图片描述

相关配置如下

本文只加了一个数据库时间类型字段转json的配置,需要搭配@JsonFormat使用,不需要的可以简化

package com.dds.test.config;import java.util.TimeZone;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;/*** 程序注解配置** @author framework*/
@Configuration
// 表示通过aop框架暴露该代理对象,AopContext能够访问
@EnableAspectJAutoProxy(exposeProxy = true)
// 指定要扫描的Mapper类的包的路径
@MapperScan("com.dds.test.**.mapper")
public class ApplicationConfig
{/*** 时区配置*/@Beanpublic Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization(){return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());}
}

启动代码如下

package com.dds.test;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class TestDdsApplication {public static void main(String[] args) {SpringApplication.run(TestDdsApplication.class, args);}
}

Controller如下

这里有些小伙伴可能会遇到@RestController和@Controller混淆的问题,或者写好了还是访问不成功的问题,尤其是用@Controller配置好后,接口能进入后台但是还是报404问题,我会在另外一篇文章进行解答
在这里插入图片描述

启动成功

在这里插入图片描述

接口调用成功

在这里插入图片描述

相关文章:

SpringMVC基于SpringBoot的最基础框架搭建——包含数据库连接

SpringMVC基于SpringBoot的最基础框架搭建——包含数据库连接 背景目标依赖配置文件如下项目结构如下相关配置如下启动代码如下Controller如下启动成功接口调用成功 背景 工作做了一段时间&#xff0c;回忆起之前有个公司有线下笔试&#xff0c;要求考生做一个什么功能&#x…...

deepspeed zero3

zero3。它是纵向切分权重&#xff08;intra-layer&#xff0c;每一层的权重切成n块&#xff09;。但是这样会增加通讯时间。你可以根据自己的模型&#xff0c;估算下切分后的通讯量和通讯时间。其次&#xff0c;pipeline并行一般指横向切分权重&#xff08;inter-layer&#xf…...

代驾小程序怎么做

代驾小程序是一款专门为用户提供代驾服务的手机应用程序。它具有以下功能&#xff1a; 1. 预约代驾&#xff1a;代驾小程序允许用户在需要代驾服务时提前进行预约。用户可以选择出发地点、目的地以及预计用车时间&#xff0c;系统会自动匹配最合适的代驾司机&#xff0c;并确保…...

探索 AJAX 技术:实现动态数据交互的前端利器

简介&#xff1a; AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;技术在 Web 前端开发中扮演着重要的角色&#xff0c;它通过异步通信和动态内容更新&#xff0c;为用户带来更好的交互体验。本篇笔记将详细探索 AJAX 技术&#xff0c;并通过生动的代码演示来展示…...

深度学习Redis(3):主从复制

前言 在前面的两篇文章中&#xff0c;分别介绍Redis内存模型和Redis持久化 在Redis的持久化中曾提到&#xff0c;Redis高可用的方案包括持久化、主从复制&#xff08;及读写分离&#xff09;、哨兵和集群。其中持久化侧重解决的是Redis数据的单机备份问题&#xff08;从内存到…...

php笔记1

php环境 PHP作为一种服务器端脚本语言&#xff0c;可以在各种操作系统上运行。搭建PHP网站的环境&#xff0c;你需要以下几个要素&#xff1a; Web服务器&#xff1a;常见的选择有Apache、Nginx和IIS。你需要安装和配置其中一个服务器软件。PHP解释器&#xff1a;PHP是一种解…...

2023 ChinaJoy 圆满闭幕,FairGuard游戏加固亮相 BTOB 展区

提振行业 产业复苏 2023年7月28日至7月31日&#xff0c;第二十届中国国际数码互动娱乐展览会( ChinaJoy)于上海新国际博览中心圆满举办。本届ChinaJoy作为疫情结束后的第一个国际性数字娱乐领域的重要产业盛会&#xff0c;对于提振行业信心、加快产业复苏、增进国际间的交流与…...

数据规约策略

有很多概念平时一直在说&#xff0c;但是具体的应用场景却一直不明确&#xff0c;这会导致我们在实际应用过程中对应该使用的方法不够明确&#xff0c;在此对常用的几种数据挖掘方法使用场景进行分类和整合。 数据降维 为什么要降维 数据稀疏&#xff0c;维度高高维数据采用…...

服务器带宽独享跟共享有什么区别103.36.166.x

独享带宽 独享带宽针对对带宽有较高的要求&#xff0c;其业务的内容和性质决定只有使用独立的带宽资源才能满足品质的需求&#xff0c;而这种只给单独客户使用的带宽资源称为独享带宽. 使用独享带宽&#xff0c;整个带宽资源归属于一个客户 独享带宽的优点是可自由使用带宽量…...

【cluster_block_exception】写操作elasticsearch索引报错

【cluster_block_exception】操作elasticsearch索引b报错 背景导致原因&#xff1a;解决方法&#xff1a; 背景 今天线上elk的数据太多&#xff0c;服务器的空间不足了。所以打算删除一些没用用的数据。我是用下面的request&#xff1a; POST /{index_name}/_delete_by_query…...

chaitin-Nginx+Docker

Nginx实战 任务一 1、源码包安装NGINX A&#xff0c;搭建Web Server&#xff0c;任意HTML页面&#xff0c;其8080端口提供Web访问服务&#xff0c;截图成功访问http(s)&#x1f615;/[Server1]:8080并且回显Web页面 官网地址&#xff1a;http://nginx.org/en/download.html 步骤…...

具体面试题

具体面试题 Java 基础 JDK 和 JRE 有什么区别&#xff1f; 和 equals 的区别是什么&#xff1f; 两个对象的 hashCode() 相同&#xff0c;则 equals() 也一定为 true&#xff0c;对吗&#xff1f; final 在 java 中有什么作用&#xff1f; java 中的 Math.round(-1.5) 等…...

Logback ThresholdFilter LevelFilter

当我们需要对日志的打印要做一些范围的控制的时候&#xff0c;通常都是通过为各个Appender设置不同的Filter配置来实现。在Logback中自带了两个过滤器实现&#xff1a; ch.qos.logback.classic.filter.LevelFilter和 ch.qos.logback.classic.filter.ThresholdFilter&#xff0c…...

python+django+mysql项目实践二(前端及数据库)

python项目实践 环境说明&#xff1a; Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理 前端模板 添加模板 在templates下创建 views文件中添加 创建数据库 连接数据库 在setting文件中进行配置 创建表...

Kubernetes高可用集群二进制部署(五)kubelet、kube-proxy、Calico、CoreDNS

Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署&#xff08;一&#xff09;主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署&#xff08;二&#xff09;ETCD集群部署 Kubernetes高可用集群二进制部署&#xff08;三&#xff09;部署…...

拦截器对接口细粒度权限校验

文章目录 一、逻辑分析二、校验规则1.规则类型2.规则划分3.规则配置信息4.规则案例说明5.规则加载 三、拦截器定义1.自定义拦截器2.注册拦截器 四、获取请求参数1.获取get提交方式参数2.获取post提交方式参数&#xff08;1&#xff09;定义RequestWrapper类&#xff08;2&#…...

计算机科技历史纵横:8月6日的十大里程碑

计算机科技历史纵横&#xff1a;8月6日的十大里程碑 目录 引言1951年&#xff1a;EDSAC电脑完成第一个实际计算任务1964年&#xff1a;IBM发布System/360系列1973年&#xff1a;Xerox PARC开发出第一台个人电脑Xerox Alto1976年&#xff1a;Apple发布Apple I电脑1981年&#…...

知识图谱实战应用23-【知识图谱的高级用法】Neo4j图算法的Cypher查询语句实例

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用23-【知识图谱的高级用法】Neo4j图算法的Cypher查询语句实例,Neo4j图算法是一套在Neo4j图数据库上运行的算法集合。这些算法专门针对图数据结构进行设计,用于分析、查询和处理图数据。图算法可以帮助我们发现图中的模…...

C++ 头文件函数大全

<cstdio>头文件&#xff1a; scanf("%d",&a); cin>>a; scanf("%d%d",&a,&b); cin>>a>>b; for(i1;i<n;i) scanf("&d,&alil); cin>>a[i]; printf("%d",a); cout&l…...

智慧物流园区整体架构方案【46页PPT】

导读&#xff1a;原文《智慧物流园区整体架构方案【46页PPT】》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式&#xff1a; 如需获取…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...