09、SpringBoot中集成SSM及其他插件

news2024/11/30 2:26:21

1、创建spring Boot项目导入如下基础依赖

<!-- 打包方式 jar 包 -->
<packaging>jar</packaging>

<!-- 指定父工程 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.3.RELEASE</version>
</parent>

<dependencies>
    <!-- spring boot Web 包 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- spring boot Test 包 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

2、如果采用的是普通的maven项目,需要手动添加下面的启动类

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

3、集成数据库相关操作

1、导入依赖

<!-- MySQL 驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

2、在配置文件(application.properties)中配置四要素

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///rbac?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=admin

3、集成Druid连接池

<!-- druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.21</version>
</dependency>

4、集成MyBatis

1、添加依赖

<!-- Mybatis 集成到 SpringBoot 中的依赖 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.1</version>
</dependency>

2、配置mapper对象

  • 此时的配置只需要在启动类上添加扫描器即可
@SpringBootApplication
@MapperScan("mapper的全限定类名")
public class SsmApplication {
    public static void main(String[] args) {
        SpringApplication.run(SsmApplication.class, args);
    }
}

3、配置mybatis的一些属性(application.properties)

# 配置别名
mybatis.type-aliases-package=cn.wolfcode.domain

# 打印 SQL 日志
logging.level.cn.wolfcode.mapper=trace

5、集成事务

1、添加依赖

<!-- Spring JDBCTX -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

2、xml方式配置

  • 采取配置类和 XML 混用的策略,在配置类上使用 @ImportResource(“classpath:spring-tx.xml”)。

3、注解方式

直接在业务层实现类上或者其方法上直接贴 @Transactional 注解即可。

4、配置代理

  • Spring Boot 默认优先选择 CGLIB 代理,如果需要改为优先使用 JDK 代理
  • 修改代理
spring.aop.proxy-target-class=false

6、集成Web

1、添加依赖

<!-- spring boot web 启动器(之前已添加了) -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2、修改端口号(application.properties)

server.port=80

3、静态资源目录搭建

在这里插入图片描述

4、静态资源处理

  • 默认情况下springBoot会从classpath下的/static,/public,/resources,/META-INF/resources下加载静态资源。
  • 可以在配置文件中添加配置spring.resources.staticLocations 属性来修改静态资源的加载地址。
  • 因为应用是打包为jar,所以如果有文件上传必须配置文件的所在路径。
# 告诉 Spring Boot 什么访问的路径是找静态资源
spring.mvc.static-path-pattern=/static/**

5、前端控制器映射路径配置

  • 在 Spring Boot 自动配置中,WebMvcAutoConfiguration 自动配置类导入了DispatcherServletAutoConfiguration 配置对象,会自动创建 DispatcherServlet 前端控制器,默认的映射路径是 /,Spring Boot 多数用于前后端分离和微服务开发,默认支持 RESTFul 风格,所以一般都是使用默认的即可,不做改动。

7、集成Thymeleaf

1、添加依赖

<!-- 引入 Thymeleaf 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2、在配置文件中配置

# Thymelea 模板配置
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML
spring.thymeleaf.encoding=UTF-8

# 热部署文件,页面不产生缓存,及时更新
spring.thymeleaf.cache=false

8、统一异常处理

1、框架自带

SpringBoot 默认情况下,会把所有的错误都交给BasicErrorController 类完成处理,错误的视图导向到classpath:/static/error/ 和 classpath:/templates/error/ 路径上,HTTP 状态码就是默认视图的名称。

  • 出现 404 错误 -> classpath:/static/error/404.html
  • 出现 5xx 错误 -> classpath:/static/error/5xx.html

2、控制器增强器方式进行处理

  • 定义一个控制器增强器,用来处理异常,一般用于500的错误
@ControllerAdvice // 控制器增强器
public class ExceptionControllerAdvice {
    @ExceptionHandler(RuntimeException.class) // 处理什么类型的异常
    public String handlException(RuntimeException e, Model model) {
        e.printStackTrace(); // 记得这行代码保留,不然项目后台出异常,开发工具控制台看不到错误信息
        return "errorView"; // 指定错误页面视图名称
    }
}

9、添加拦截器

1、编写拦截器

@Component
public class LoginInterceptor implements HandlerInterceptor { 
    // ...
}

2、配置拦截器

  • 定义一个配置类,实现 WebMvcConfigurer 接口,在 addInterceptors 方法注册拦截器。
@Configuration
public class MvcJavaConfig implements WebMvcConfigurer {

    @Autowired
    private LoginInterceptor loginInterceptor;

    @Autowired
    private PermissionInterceptor permissionInterceptor;

    public void addInterceptors(InterceptorRegistry registry) {
        // 注册登录拦截器
        registry.addInterceptor(loginInterceptor)
            // 对哪些资源起过滤作用
            .addPathPatterns("/**")
            // 对哪些资源起排除作用
            .excludePathPatterns("/login", "/static/**");
    }
}

10、Spring Boot中的日志介绍

1、简介

  • Spring Boot默认已经开启日志,默认的日志格式为:时间 日志级别 线程id 线程名称 日志类 日志说明
  • Spring Boot日志分为:系统日志和应用日志。
  • 日志级别越高,输出内容越少,如果设置的级别为 info,则 debug 以及 trace 级别的都无法显示,日志级别由低到高 trace < debug < info < warn < error。
  • Spring Boot 默认选择 Logback 作为日志框架,也能选择其他日志框架,但是没有必要。

2、输出日志

1、方式一

  • 在类中定义一个静态 Logger 对象,传入当前类的作用是方便输出日志时可以清晰地看到该日志信息是属于哪个类的。
private static final Logger log = LoggerFactory.getLogger(当前类.class);

2、方式二

  • 使用 Lombok 提供的 @Slf4j 注解来简化代码,其实和方式一的作用是一样的。
@Slf4j
@Service
public class PermissionServiceImpl implements IPermissionService {}
  • 在需要输出日志的地方使用日志的输出方法
log.info(...);
log.error(...);
...
// 输出日志中有变量可以使用 {} 作为占位符
log.info("删除id为{}的数据", id);
  • 若要修改日志级别,最快速的方式是在 application.properties 配置
# 把日志级别修改为 debug,不过我们一般不会更改,除非要调试找 bug,不然控制台显示的内容太多也容易乱
logging.level.root=debug

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

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

相关文章

[附源码]Node.js计算机毕业设计房屋中介管理信息系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

[附源码]Python计算机毕业设计SSM基于web的图书借阅管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

常规设置Apache服务器实例

常规设置Apache服务器实例 1&#xff0e;设置文档根目录和首页文件的实例 【例1】默认情况下&#xff0c;网站的文档根目录保存在/var/www/html中&#xff0c;如果想把保存网站文档的根目录修改为/home/wwwroot&#xff0c;并且将首页文件修改为myweb.html&#xff0c;那么该如…

CPU一级缓存L1 D-cache\L1 I-cache与二级缓存L2 cache深度分析

CPU缓存&#xff1a;通过优化的的读取机制&#xff0c;可以使CPU读取缓存的命中率非常高&#xff08;大多数CPU可达90%左右&#xff09;&#xff0c; 也就是说CPU下一次要读取的数据90%都在缓存(SRAM)中&#xff1b; 只有大约10%需要从内存&#xff08;DRAM、DDR等&#xff0…

MATLAB抽样定理实验

目录 一、实验目的 二、实验原理 三、实验要求 四、实验内容 1、连续时间信号时域波形及其幅度谱 2、信号进行抽样 3、频谱分析 4、由各抽样信号恢复出连续时间信号&#xff0c;计算并画出误差函数 一、实验目的 1、掌握抽样定理工作原理 2、练习使用Matlab编程进行抽…

非零基础自学Golang 第2章 安装和运行Go 2.5 安装开发工具

非零基础自学Golang 第2章 安装和运行Go 2.5 安装开发工具 互联网有很多可用的开发工具&#xff08;IDE&#xff09;&#xff0c;对于Go开发者来说&#xff0c;选一款最好用的工具&#xff0c;可以更高效地编码和构建项目。 GoLand是一款由JetBrains公司&#xff08;一家技…

【面试题】三面 面试官:运行 npm run xxx 的时候发生了什么?

大厂面试题分享 面试题库 前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 事情是这样的&#xff0c;直接开讲 面试官&#xff1a;npm run xxx的时候&#xff0c;发生了什么&#xff1f;讲的越详细越好。 我&am…

智能家居DIY之智能插座

WiFi智能插座对于新手接触智能家居产品更加友好&#xff0c;不需要额外购买网关设备 很多智能小配件也给我们得生活带来极大的便捷&#xff0c;智能插座就是其中之一&#xff0c;比如外出忘记关空调&#xff0c;可以拿起手机远程关闭。 简单说就是&#xff1a;插座可以连接wi…

深度学习的初学者用哪本书比较好的?

先推荐一本从基本概念和理论入手的深度学习书&#xff1a; 深度学习&#xff1a;从基础到实践&#xff08;上、下册&#xff09; 本书从基本概念和理论入手&#xff0c;通过近千张图和简单的例子由浅入深地讲解深度学习的相关知识&#xff0c;且不涉及复杂的数学内容。 本书分…

交叉梯度函数的MATLAB实现及代码分享01

交叉梯度函数的MATLAB实现及代码分享01 交叉梯度函数可用于反演成像中。作为一个连接不同物性参数的桥梁&#xff0c;交叉梯度函数可以实现不同物性参数的联合反演成像。 文章目录交叉梯度函数的MATLAB实现及代码分享01一、交叉梯度函数的定义二、交叉梯度函数的性质三、模型算…

14:30面试,14:38就出来了 ,问的实在是太...

从外包出来&#xff0c;没想到算法死在另一家厂子&#xff0c;自从加入这家公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到8月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资直降30%&#xff0c;顿时有吃不起饭的赶脚。 好在有…

考虑特性分布的储能电站接入的电网多时间尺度源储荷协调调度策略(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

为什么mac电脑识别不出来u盘?macbook识别不了u盘的解决办法

为什么mac电脑识别不出来u盘&#xff1f;关于U盘插入Mac电脑无反应的情况有很多种&#xff0c;是电脑无法识别U盘&#xff1f;电脑上面没有U盘的图标&#xff1f;还是插入后无法对U盘进行写入&#xff1f;针对不同的情况&#xff0c;解决的方法也是不一样的。现在&#xff0c;我…

电脑重装系统一启动就黑屏了该怎么办

相信很多用户都遇到过电脑一开机就黑屏了的问题&#xff0c;对于这个问题很多用户不知道怎么去排查问题&#xff0c;这里就和大家简单聊聊遇到电脑开机黑屏这种情况都有什么原因&#xff0c;又该如何解决吧。下面一起来看看解决方法吧&#xff01; 电脑一启动就黑屏的问题该如何…

一场没有先例的自动驾驶算法大赛,出结果了

贾浩楠 发自 凹非寺量子位 | 公众号 QbitAI自动驾驶领域没有先例的一场挑战赛&#xff0c;刚刚出结果。1067支队伍&#xff0c;整3个月时间主要在自动驾驶卡车、干线物流和自动驾驶轿车、城市道路双赛道场景下角逐。这也或是国内首次有干线物流赛道入赛&#xff0c;覆盖AEB紧急…

引擎入门 | Unity UI简介–第2部分(8)

本期我们继续为大家进行Unity UI简介&#xff08;第二部分&#xff09;的后续教程 本篇内容 14.静音功能 15.使用滑块来调节音量 16.更改AudioSource组件的音量 文章末尾可免费获取教程源代码 本篇本篇Unity UI简介&#xff08;第二部分&#xff09;篇幅较长&#xff0c;…

汇编移位指令SHR,SAR,SAL/SHL,ROR,ROL,RCR,RCL

目录 逻辑右移SHR 算数右移SAR&#xff08;重点&#xff09; 算数/逻辑左移SAL/SHL(完成的操作都一样) 循环右移ROR 循环左移ROL 带进位循环右移RCR 带进位循环左移RCL 总结 例题 一 二 移位指令为双操作数指令&#xff0c;用于将目的的操作数中的二进制数移位。 目…

【JAVA】强引用、软引用、弱引用、幻象引用有什么区别?

前言 在 Java 语言中&#xff0c;除了原始数据类型的变量&#xff0c;其他所有都是所谓的引用类型&#xff0c;指向各种不同的对象&#xff0c;理解引用对于掌握 Java 对象生命周期和 JVM 内部相关机制非常有帮助。 本篇博文的重点是&#xff0c;强引用、软引用、弱引用、幻象…

声纹识别--基础学习笔记

由于每个人的声道、口腔和鼻腔(发音要用到的器官)也具有个体差异性。因为反映到声音上&#xff0c;也是具有差异性的。就比如说&#xff0c;当在接电话的时候&#xff0c;通过一声"喂"&#xff0c;就能准确的分辨出接电话的是谁&#xff0c;人耳作为身体的接收器生来…

Python学习基础笔记四十八——面向对象2

1、类中的属性&#xff1a;静态属性。 class Person:country China # 类属性&#xff0c;静态属性def __init__(self, name, age): # 初始化方法&#xff0c;self是必须传的参数&#xff0c;且放在在第一个self.name name # 往字典里添加属性self…