开发基础
开发基础笔记
mybatis-plus通用的service方法
通过jenkins配置前后端自动打包及发布
mybatis-plus实现分页的方式
Java极客技术公众号PDF
狂神说SpringBoot
Hashids java 版使用
SpringBoot
1、Web快速开发
2、结果集的封装
3、集成MyBatis实现数据库操作
4、Springboot @Validated参数校验
5、SpringBoot全局异常处理
6、拦截器HandlerInterceptor
7、集成Swagger实现API自动生成
8、集成knife4j实现API自动生成
9、Springboot集成MyBatis-Plus快速入门
10、springboot自定义注解及AOP切面使用
11、使用Shiro实现登陆和权限认证,基于MyBatis
12、集成SpringSecurity实现授权认证
13、SpringBoot集成EasyExcel实现数据导入与导出
14、Spring Task定时任务的实现
15、Quartz快速上手与实践
16、如何用代码实现Spring IOC
17、SpringBoot集成JWT,实现接口的鉴权交互
SpringCloud
Nacos作为服务注册中心
seata1.6.1 结合springcloud实现分布锁的技术笔记
一些技术博客推荐
前端面试相关
看这一篇就够了
java.util包常用的类和接口
CountDownLatch介绍与使用
Common-lang3使用入门
Hutool简单使用入门
lombok 介绍及基本使用方法
git项目统计成员代码行数和提交的次数
mysql 逗号分隔的数据 like查询
使用sonar进行代码质量检查
线上使用jmeter进行压测的时候,使用Arthas诊断工具排查响应慢的接口
php结合phpstudy8、vscode开启xdebug进行代码调试
node-red使用入门
分享两个好用的vba宏,用于批量处理word中的表格
本文档使用 MrDoc 发布
-
+
首页
狂神说SpringBoot
## 1 什么是springboot 2003年兴起的一个轻量级java开发框架 作者rod johnson 如何简化java开发的? 约定大于配置,springboot为了让大家更容易的使用spring,更容易集成各种常用的中间件,开源软件 springboot整合了所有框架,maven整合了所有Jar包。 创建项目有哪几种方式 ## 2 运行原理 maven项目,一般从pom.xml开始探究 启动器 spring-boot-starter-xxx web就是帮我导入web模块所有的依赖。 重要的注解 @SpringBootApplication @ComponentScan @Configuration 自动配置真正实现是从classpath中搜索所有META-INF/spring.factories配置文件,从中获取EnableAutoConfiguration指定的值 。 SpringAppilcation这个类主要做了哪几件事? ## 3 YAML配置注入 全局配置文件 application.properties application.yml 修改springboot默认的端口号 ~~~ server: port: 8080 ~~~ yaml的配置数据可以直接注入到类中。 配置参数中可以使用 占位符生成随机数。 ## 4 JSR303数据检验及多环境切换 使用@validated来检验数据, 重要的几个检验注解: @Email @NotNull(message="不能为空") @Max(value = 120,message="年龄不能大于120") 通过设置spring.profiles.active=dev切换配置文件。 springboot会从4个位置 加载配置文件。 通过spring.config.location来改变默认的配置文件位置。 ## 5 自动配置的原理 自动配置类必须 在一定条件下才能生效。 @Conditional派生注解 通过启用debug=true属性,来让控制台打印自动配置的报告告诉我们哪些自动配置类生效了? Positive matches: 自动配置类启用的:正匹配 Negative matches: 没有启动,没有匹配成功的自动配置类,负匹配 Uncaonitional classes: 没有条件的类 ## 6 自定义starter 命名归约: 官方 spring-boot-starter-xxxxx 自定义 xxx-spring-boot-starter ## 7 整合jdbc Spring Data是 spring公司中 与springboot springcloud齐名的项目。 springboot2 开始,默认使用HikariDataSource数据源。 HikariDataSource号称是java web中最快的数据源,相比于传统的c3p0 dbcp tomcat jdbc 更加优秀。 可以通过spring.datasource.type自定义数据源。 jdbcTemplate 是spring官方对jdbc做了简单封装。数据库所有的crud方法都在jdbcTemplate中。 jdbcTemplate直接注入使用就可以,提供了几个常用的方法: execute upadte batchUpdate query queryForXXX call 示例一下简单的select查询 : ~~~java String sql = "select * from user"; List<Map<String, Object>> users = jdbcTemplate.queryForList(sql); return users; ~~~ ## 8 整合Druid Hikarri和 Druid 都是当下最流行的数据源, Druid有日志监控功能。 集成步骤: 1 添加Druid数据源依赖。 2 配置spring.datasource.type 指定数据源 3 在测试类开注入DataSource,输出 看看是否成功切换。 4 如果切换成功,就可以进行参数的配置,如连接池大小,最大连接数 等待时间 最小连接数等。 > 1. testOnBorrow和testOnReturn在生产环境一般是不开启的,主要是性能考虑。失效连接主要通过testWhileIdle保证,如果获取到了不可用的数据库连接,一般由应用处理异常。 > 2. druid 1.1.10中的bug导致开启 testOnReturn和testOnBorrow 各有5倍的性能差距(1.1.24版本已经解决了该问题),试验发现性能大概损耗不到10%。 > 3. 如果你的应用不需要考虑高并发下的性能差距,且想要每次都获取到有效的连接,那就将 testOnReturn和testOnBorrow 都设置为true。 开启web监控的后台管理页面。 ## 9 整合mybatis 第一种集成druid方式 ~~~ <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency> ~~~ 如果使用第一种集成druid方式,配置数据库连接信息如下: ~~~ spring: datasource: username: root password: 123456 #?serverTimezone=UTC解决时区的报错 url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource #Spring Boot 默认是不注入这些属性值的,需要自己绑定 #druid 数据源专有配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入 #如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority #则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j filters: stat,wall,log4j maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 ~~~ 第二种集成druid方式 ~~~ <!-- druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.6</version> </dependency> ~~~ 如果使用第二种集成druid方式,则配置数据的配置如下: ~~~ spring: datasource: druid: initial-size: 15 max-active: 33 max-wait: 60000 min-evictable-idle-time-millis: 300000 min-idle: 5 test-on-borrow: false test-on-return: false test-while-idle: true time-between-eviction-runs-millis: 60000 url: jdbc:mysql://10.168.1.184:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: 123456 validation-query: select 1 ~~~ 写一个测试的方法,判断配置是否生效: ~~~java @SpringBootTest class DemoApplicationTests { //DI注入数据源 @Autowired DataSource dataSource; @Test void contextLoads() throws SQLException { //看一下默认数据源 System.out.println(dataSource.getClass()); //获得连接 Connection connection = dataSource.getConnection(); System.out.println(connection); DruidDataSource druidDataSource = (DruidDataSource) dataSource; System.out.println("druidDataSource 数据源最大连接数:" + druidDataSource.getMaxActive()); System.out.println("druidDataSource 数据源初始化连接数:" + druidDataSource.getInitialSize()); //关闭连接 connection.close(); } } ~~~ 创建实体类,导入Lombok 创建mapper目录以及对应的mapper接口,还有对应的mapper映射文件。
superadmin
2023年9月20日 00:09
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码