ssm框架-springboot学习笔记

ops/2025/1/16 6:59:13/

1.快速入门

在pom文件中将父工程文件配置成一个springboot文件,就可以将整个项目转换为springboot文件了

然后导入一个启动器依赖就可以直接启动一个springboot项目了

springboot启动器的类和固定写法

添加一个这样的注解就表示这是一个启动类,

代码参数如下,都是固定的

通过这样就能够创建一个ioc容器然后启动tomcat服务

@SpringBootApplication注解解析

这是一个springboot的核心注解,表明该类是一个启动器,那么启动器完成的功能有哪些呢?

我们点进去该注解的源码

观察红色箭头指出的三个核心注解

其功能在下图注解中展示出来

其中componentScan读取的所有的类都是该类包下的那个类,所以一般启动器类会放在主包下面

@EnableAutoConfiguration注解

能够读取其他的配置类,我们以前使用spring时,需要自己写很多的配置类,比如mvc的配置类

mybatis的配置类,那么有了这个注解之后,我们只需要在maven中的pom文件中导入对应的配置

类就可以了

假如我们需要web工程的依赖,即mvc的依赖,我们在pom文件中导入这个依赖,然后就可以通过

enableautoconfiguration读取所有的配置类完成对应的配置

如果想要数据库配置类的依赖只需要在maven-serach中搜索就可以了

yaml文件

普通的properties文件采用这种多级目录的方式命名,非常的繁杂,要写多个包号

而将其改成yml文件的形式那就是

以这种层级目录的形式展现,省去了大部分的功夫

以缩进来展现层级,和python类似

yaml文件的读取

1.value读取yaml文件

而对其中的变量引用我们可以使用全称进行引用

但是注意Value使用存在一个缺点

对于一个形如右侧gfs的列表形式的变量不能进行读取

而且变量名称必须写全

2.@ConfigurationProperties注释读取(批量配置读取)

也可以通过@ConfigurationProperties对前缀进行概括,然后当变量的名等于文件中的key后缀是可以自动的引用

(因为@value()不可以对列表变量进行引用)

yaml文件多环境配置

在Spring Boot中,可以使用多环境配置来根据不同的运行环境(如开发、测试、生产)加载不同的配置。SpringBoot支持多环境配置让应用程序在不同的环境中使用不同的配置参数,例如数据库连接信息、日志级别、缓存配置等。

这是我们不能够把所有的配置信息全都放在一个文件中,所以我们需要多个yml文件,然后用一个父yml文件对参数进行选择

假如有如下文件结构

dev文件中的代码如下

test文件中代码如下

application配置文件如下:

我们通过spring.profiles.active指定其他application文件的后缀名就可以将别的文件的参数读入

图中红杠标注的情况是当内部文件和外部文件起冲突时(即有相同的参数名称)我们有限以外部配

置为基准,优先引用外部配置

springboot整合springMVC

我们导入web相关的依赖,即配置文件

在yml里面填写配置信息

自定义拦截器配置

1.拦截器声明

package com.atguigu.interceptor;import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;@Component
public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("MyInterceptor拦截器的preHandle方法执行....");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("MyInterceptor拦截器的postHandle方法执行....");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("MyInterceptor拦截器的afterCompletion方法执行....");}
}

2.拦截器配置

同样书写一个配置类,只需同通过@Configuration假如到ioc容器中就能够读取该拦截器

package com.atguigu.config;import com.atguigu.interceptor.MyInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class MvcConfig implements WebMvcConfigurer {@Autowiredprivate MyInterceptor myInterceptor ;/*** /**  拦截当前目录及子目录下的所有路径 /user/**   /user/findAll  /user/order/findAll* /*   拦截当前目录下的以及子路径   /user/*     /user/findAll* @param registry*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(myInterceptor).addPathPatterns("/**");}
}

springboot整合druid连接池

依赖的导入

这几个依赖是和druid有关的

<!-- 数据库相关配置启动器 jdbctemplate 事务相关--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- druid启动器的依赖  --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-3-starter</artifactId><version>1.2.18</version></dependency><!-- 驱动类--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency>

yaml配置文件的书写

常用配置如下

spring:
  datasource:
    # 连接池类型 
    type: com.alibaba.druid.pool.DruidDataSource

    # Druid的其他属性配置 springboot3整合情况下,数据库连接信息必须在Druid属性下!
    druid:
      url: jdbc:mysql://localhost:3306/day01
      username: root
      password: root
      driver-class-name: com.mysql.cj.jdbc.Driver
      # 初始化时建立物理连接的个数
      initial-size: 5
      # 连接池的最小空闲数量
      min-idle: 5
      # 连接池最大连接数量
      max-active: 20
      # 获取连接时最大等待时间,单位毫秒
      max-wait: 60000
      # 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
      test-while-idle: true
      # 既作为检测的间隔时间又作为testWhileIdel执行的依据
      time-between-eviction-runs-millis: 60000
      # 销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接(配置连接在池中的最小生存时间)
      min-evictable-idle-time-millis: 30000
      # 用来检测数据库连接是否有效的sql 必须是一个查询语句(oracle中为 select 1 from dual)
      validation-query: select 1
      # 申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
      test-on-borrow: false
      # 归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
      test-on-return: false
      # 是否缓存preparedStatement, 也就是PSCache,PSCache对支持游标的数据库性能提升巨大,比如说oracle,在mysql下建议关闭。
      pool-prepared-statements: false
      # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
      max-pool-prepared-statement-per-connection-size: -1
      # 合并多个DruidDataSource的监控数据
      use-global-data-source-stat: true

logging:
  level:
    root: debug

springboot整合mybatis框架

1.导入springboot相关的mybatis配置依赖

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.1</version></dependency>

2.在启动类中读入mapper接口

使用mapperScan()将你的mapper接口所在的路径填入,就可以扫描mapper接口将其进行mapper文件的代理

3.声明式事务

1.导入依赖

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

2.添加@Transactional注解

注:SpringBoot项目会自动配置一个 DataSourceTransactionManager,所以我们只需在方法(或者类)加上 @Transactional 注解,就自动纳入 Spring 的事务管理了

当事务发生异常时就会直接进行事务回滚

@Transactional
public void update(){User user = new User();user.setId(1);user.setPassword("test2");user.setAccount("test2");userMapper.update(user);
}

springboot整合aop

导入依赖

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

直接使用aop注解就可以了,只需要自己写一个切面就可以

@Component
@Aspect
public class LogAdvice {@Before("execution(* com..service.*.*(..))")public void before(JoinPoint joinPoint){System.out.println("LogAdvice.before");System.out.println("joinPoint = " + joinPoint);}}

springboot项目的打包和运行

1.添加打包插件

在Spring Boot项目中添加spring-boot-maven-plugin插件是为了支持将项目打包成可执行的可运行jar包。如果不添加spring-boot-maven-plugin插件配置,使用常规的java -jar命令来运行打包后的Spring Boot项目是无法找到应用程序的入口点,因此导致无法运行。

<!--    SpringBoot应用打包插件-->
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

2.执行打包

在idea点击package进行打包

可以在编译的target文件中查看jar包

在cmd里面执行jar文件可以通过-Dspring.profiles.active=xx,jj来选择对应的执行环境,实现不同环境的不同参数


http://www.ppmy.cn/ops/150494.html

相关文章

YOLOv10-1.1部分代码阅读笔记-dataset.py

dataset.py ultralytics\data\dataset.py 目录 dataset.py 1.所需的库和模块 2.class YOLODataset(BaseDataset): 3.class ClassificationDataset(torchvision.datasets.ImageFolder): 4.def load_dataset_cache_file(path): 5.def save_dataset_cache_file(prefix,…

springboot vue uniapp 仿小红书 1:1 还原 (含源码演示)

线上预览: 移动端 http://8.146.211.120:8081/ 管理端 http://8.146.211.120:8088/ 小红书凭借优秀的产品体验 和超高人气 目前成为笔记类产品佼佼者 此项目将详细介绍如何使用Vue.js和Spring Boot 集合uniapp 开发一个仿小红书应用&#xff0c;凭借uniapp 可以在h5 小程序 app…

配置Allure环境变量【macOS版】

1. 进入github官网&#xff0c;搜索allure 点击进入&#xff0c;下滑找到Download栏目&#xff0c;点击release 2. 下载安装包并解压 我下载的是zip&#xff0c;解压至存放目录&#xff0c;复制该目录。&#xff08;一会配置环境变量用&#xff09; 3. 编辑.zsrch文件&…

【C语言】【C++】Curl库的安装

1、访问github上的curl源代码库&#xff1a; 源码链接 2、下载curl的全部源码&#xff1a; 3、解压缩&#xff0c;找到include/目录下的curl/文件夹&#xff0c;将它复制到编译器的include目录下。 之后就可以引用相关头文件了。举例&#xff1a; #include <curl/curl.h&g…

(三)c#中const、static、readonly的区别

在 C# 中&#xff0c;const、static 和 readonly 都是用来定义不可变的值&#xff0c;但它们有一些关键的区别。让我们详细比较一下这三者的用途和特点&#xff1a; 1. const&#xff08;常量&#xff09; 编译时常量&#xff1a;const 用于声明常量&#xff0c;其值必须在编…

微调神经机器翻译模型全流程

MBART: Multilingual Denoising Pre-training for Neural Machine Translation 模型下载 mBART 是一个基于序列到序列的去噪自编码器&#xff0c;使用 BART 目标在多种语言的大规模单语语料库上进行预训练。mBART 是首批通过去噪完整文本在多种语言上预训练序列到序列模型的方…

Redis十大数据类型详解

Redis&#xff08;一&#xff09; 十大数据类型 redis字符串&#xff08;String&#xff09; string是redis最基本的类型&#xff0c;一个key对应一个value string类型是二进制安全的&#xff0c;意思是redis的string可以包含任何数据。例如说是jpg图片或者序列化对象 一个re…

Idea+docker通过dockerFile方式往华为云发布项目

一:前置说明 1.1 演示环境 JDK8IDEA 2022.2.1华为云 CentOS 8.2 64bitDocker 26.1.3 注&#xff1a;华为云上已经安装了docker&#xff0c;能够这次拉取镜像等 二&#xff1a;Idea内的相关配置 2.1 docker插件安装 idea->File->settings 进入setting操作也安装docke…