🎉🎉欢迎来到我的CSDN主页!🎉🎉
🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚
🌟推荐给大家我的博客专栏《SpringBoot开发》。🎯🎯
🎁如果感觉还不错的话请给我关注加三连吧!🎁🎁
? ? ? ? 很久没有与老铁们分享开发知识了,在分享之前想必老铁们都有了解学习过SpringMVC、SpringSSM等等一些有关spring的相关知识,今天给大家带来的也是与Spring相关的,它就是——SpringBoot,让我们一起来探索SpringBoot的知识领域吧。
????????Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。众所周知 Spring 应用需要进行大量的配置,各种 XML 配置和注解配置让人眼花缭乱,且极容易出错,因此 Spring 一度被称为“配置地狱”。为了简化 Spring 应用的搭建和开发过程,Pivotal 团队在 Spring 基础上提供了一套全新的开源的框架,它就是Spring Boot。
? ? ? ? 总之,SpringBoot就是一个模版,是SpringMVC的脚手架。
特点或优势 | 说明 |
独立运行 | Spring Boot可以作为独立的应用程序运行,不需要部署到其他应用服务器或容器中,真正实现了Java应用“Write Once, Run Anywhere”。 |
自动配置 | Spring Boot会自动配置大部分常用的配置,如数据源、消息队列、安全等,让开发者能够快速上手并专注于业务逻辑。 |
嵌入式Web服务器 | Spring Boot内置了Tomcat和Jetty等Web服务器,可以快速搭建Web应用程序。 |
提供大量starter | Spring Boot提供了大量的starter,让开发者能够快速引入并使用第三方库和框架。 |
丰富的插件支持 | Spring Boot支持各种插件,如HikariCP、Elasticsearch、Redis等,方便开发者集成和管理这些插件。 |
良好的性能 | Spring Boot使用了各种优化技术,如缓存、压缩、分页等,使得应用程序具有良好的性能和响应速度。 |
易于监控 | Spring Boot提供了内置的监控功能,可以方便地监控应用程序的运行状态和性能指标。 |
安全性 | Spring Boot提供了多种安全特性,如密码加密、安全认证、跨域访问等,保障应用程序的安全性。 |
易于扩展 | Spring Boot使用了基于Java的注解配置方式,可以方便地扩展和定制其功能。 |
社区活跃 | Spring Boot拥有庞大的社区和支持,开发者可以方便地获取帮助和解决问题。 |
总之,Springboot是为了提升Spring开发者的工具,特点就是敏捷式、快速开发。
????????首先我们点击打开IDEA开发工具,然后我们点击New Project按钮进行创建一个新的项目文件。
? ? ? ? ?然后它会弹出一个新的窗口,我们对其进行相应的填写,点击Next进行下一步操作。
注: 在这里我有几点建议,如下:
- 选择https://start.spring.io为下载网址路径的话是默认使用SpringBoot官网的下载路径,下载速度相对于慢,对于的Java的版本要求比较高,只允许使用Java17和Java21。所以推荐使用阿里云的下载路径网址,使用阿里云的相对于下载快,Java的版本要求低(8,11,17,21)。
- jdk与java版本选择自己电脑上下载的版本。
阿里云下载网址路径:https://start.aliyun.com/
? ? ? ? 然后选择SpringBoot所需的相关依赖。
? ? ? ? 下面是我推荐使用的一些依赖:
- Developer Tools:Lombok(提供实体对象get/set方法)、Spring Boot DevTools(类似于jreb,是热加载)
- Web:Spring Web (相当于SpringMVC)
- SQL:MySQL Driver(mysql数据库)、Mybatis Framework(mybatis)
- SpringBoot的版本不要选择3以上的即可。
最后点击create创建即可。
?????????如果是重新安装的IDEA的话,可以去看往期的博客去查看Mybatis如何集成到IDEA开发工具中,以及所需下载的插件。
? ? ? ? 接下来我们简单说一下生成的文件作用
?
? ? ? ? 在配置好之后我们可以启动项目,访问他自动生成的Controller层。?
? ? ? ? 注意事项:
- 我们编写的源码必须存放在SpringBoot自动生成的启动类的同级目录下,不管是新建文件夹还是类,都是如此否则无法识别代码。
- application.properties文件名不能修改,推荐使用yml文件不推荐使用properties文件
? ? ? ? 右击application.properties文件,选择重命名,将properties文件后缀修改为yml后缀,最后将文件的内容格式也修改为yml文件格式即可。
? ? ? ? 我们在IDEA中下载Convert YAML and Properties File这个插件,然后右击文件会显示Convert YAML and Properties File该选项,点击即可转换。
? ? ? ? 先将mysql与mybatis的依赖注释掉,否则无法启动该项目。点击自带生成的启动类启动即可。
? ? ? ? 我们访问SpringBoot自带生成的Controller层。
????????http://127.0.0.1:8080/hello?name=lisi
? ? ? ? 说明项目成功启动并且访问。?然后将之前注释的依赖还原回去。
? ? ?将MyBatis的本修改与SpringBoot版本进行修改。如下图
?????????因为我们采用的SpringBoot的版本是2.6.13所以我们的Mybatis的版本使用2.3.0
?
? ? ? ? ?Mybatis的依赖版本修改号之后我们进行yml文件的配置。同时连接数据库。
连接数据库?
?生成数据库表对应的实体类
?application.yml文件配置
# 配置mybatis,必须配置的mapper.xml
mybatis:
#mapper.xml所在位置
mapper-locations: classpath*:mappers/*xml
# 配置别名扫描,实体类所在包名
type-aliases-package: com.yx.sboot.pojo
# 服务访问的端口号
server:
port: 8080
spring:
# 数据源配置
datasource:
url: jdbc:mysql://localhost:3306/bookshop
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
?
? ? ? ? ?我们直接启动项目,但会出现一个报错
? ? ? ? ?解决方案如下
? ? ? ? 重新运行访问即可。?
PageBean.java
package com.yx.sboot.util;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class PageBean {
private Integer page = 1;
private Integer rows = 5;
private Long total = 0L;
private boolean open = true;
public int start() {
return (page - 1) * rows;
}
public int previous() {
return Math.max(this.page - 1, 1);
}
public int next() {
return Math.min(this.page + 1, maxPage());
}
public int maxPage() {
return (int) Math.ceil(this.total.intValue() / (this.rows * 1.0));
}
}
? ? ? ? 对其控制层进行对应的修改,如下图
? ? ? ? ?启动项目访问效果
?
? ? ? ? 注:如果你使用的分页插件版本是1.4.6以下运行可能会报一个循环错误??
PageAspect.java
package com.yx.sboot.aop;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.yx.sboot.util.PageBean;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class PageAspect {
@Pointcut("@annotation(PageAnnotation)")
public void cut() {
}
@Around("cut()")
public Object aroundHandler(ProceedingJoinPoint point) throws Throwable {
Object[] args = point.getArgs();
PageBean pageBean = new PageBean().setOpen(false);
for (Object arg : args) {
if (arg instanceof PageBean) pageBean = (PageBean) arg;
}
PageHelper.startPage(pageBean.getPage(), pageBean.getRows(), pageBean.isOpen());
Object val = point.proceed();
if (pageBean.isOpen()) {
Page<?> page = (Page<?>) val;
pageBean.setTotal(page.getTotal());
}
return val;
}
}
?PageAnnotation.java
package com.yx.sboot.aop;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PageAnnotation {
}
? ? ? ? 切面运用,如下图所示
?
?
?
? ? ? ? ?运行结果展示
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 初始化时建立物理连接的个数
initial-size: 5
# 最小连接池数量
min-idle: 5
# 最大连接池数量
max-active: 20
#配置获取连接等待超时的时间
max-wait: 60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 30000
# 用来检测连接是否有效的 sql,要求是一个查询语句
validation-query: SELECT 1 FROM DUAL
# 建议配置为 true,不影响性能,并且保证安全性
test-while-idle: true
# 申请连接时执行 validationQuery 检测连接是否有效
test-on-borrow: true
# 归还连接时执行 validationQuery 检测连接是否有效
test-on-return: false
# 是否缓存 preparedStatement,即 PsCache
# PSCache 对支持游标的数据库性能提升巨大,比如说 oracle,而 mysql 则建议关闭
pool-prepared-statements: true
# 要启用 PSCache,必须配置大于0
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计
filter:
stat:
merge-sql: true
slow-sql-millis: 5000
# 基础监控配置
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
session-stat-enable: true
session-stat-max-count: 100
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: true
login-username: admin #设置监控页面的登录名和密码
login-password: admin
allow: 127.0.0.1 #deny: 192.168.1.100
? ? ? ? ?配置成功之后直接运行即可,登陆以下网址可以对其项目进行数据请求的监视
网址:德鲁伊监视器
?
? ? ? ? 以上演示德鲁伊的使用?
?运行测试结果如下
?本期博客分享到此结束
感谢老铁们的观看
三连加关注支持博主哦
?
?