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: truelogging:
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来选择对应的执行环境,实现不同环境的不同参数