Druid数据库
Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。
Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。
Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。
Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。
Spring Boot 2.0 以上默认使用 Hikari 数据源,可以说 Hikari 与 Driud 都是当前 Java Web 上最优秀的数据源,我们来重点介绍 Spring Boot 如何集成 Druid 数据源,如何实现数据库监控。
Github地址:https://github.com/alibaba/druid/
spring: datasource: username: root password: 123456 url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource initial-size: 5 min-idle: 5 max-active: 20 # 配置获取连接等待超时的时间 max-wait: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 time-between-eviction-runs-millis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false # 打开PSCache,并且指定每个连接上PSCache的大小 pool-prepared-statements: true # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 最好的功能 max-pool-prepared-statement-per-connection-size: 20 filters: stat,wall use-global-data-source-stat: true # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
type: com.alibaba.druid.pool.DruidDataSource
package com.alibaba.druid.pool; /** * @author ljw [ljw2083@alibaba-inc.com] * @author wenshao [szujobs@hotmail.com] */ public class DruidDataSource extends DruidAbstractDataSource implements DruidDataSourceMBean, ManagedDataSource, Referenceable, Closeable, Cloneable, ConnectionPoolDataSource, MBeanRegistration { private final static Log LOG = LogFactory.getLog(DruidDataSource.class); private static final long serialVersionUID = 1L; // stats private volatile long recycleErrorCount = 0L; private long connectCount = 0L; private long closeCount = 0L; private volatile long connectErrorCount = 0L; private long recycleCount = 0L; private long removeAbandonedCount = 0L; private long notEmptyWaitCount = 0L; private long notEmptySignalCount = 0L; private long notEmptyWaitNanos = 0L; private int keepAliveCheckCount = 0; private int activePeak = 0; private long activePeakTime = 0; private int poolingPeak = 0; private long poolingPeakTime = 0; // store private volatile DruidConnectionHolder[] connections; private int poolingCount = 0; private int activeCount = 0; private volatile long discardCount = 0; private int notEmptyWaitThreadCount = 0; private int notEmptyWaitThreadPeak = 0; // private DruidConnectionHolder[] evictConnections; private DruidConnectionHolder[] keepAliveConnections; // threads private volatile ScheduledFuture<?> destroySchedulerFuture; private DestroyTask destroyTask; private volatile Future<?> createSchedulerFuture; private CreateConnectionThread createConnectionThread; private DestroyConnectionThread destroyConnectionThread; private LogStatsThread logStatsThread; private int createTaskCount; private volatile long createTaskIdSeed = 1L; private long[] createTasks; private final CountDownLatch initedLatch = new CountDownLatch(2); private volatile boolean enable = true; private boolean resetStatEnable = true; private volatile long resetCount = 0L; private String initStackTrace; private volatile boolean closing = false; private volatile boolean closed = false; private long closeTimeMillis = -1L; protected JdbcDataSourceStat dataSourceStat; private boolean useGlobalDataSourceStat = false; private boolean mbeanRegistered = false; public static ThreadLocal<Long> waitNanosLocal = new ThreadLocal<Long>(); private boolean logDifferentThread = true; private volatile boolean keepAlive = false; private boolean asyncInit = false; protected boolean killWhenSocketReadTimeout = false; protected boolean checkExecuteTime = false; private static List<Filter> autoFilters = null; private boolean loadSpifilterSkip = false; private volatile DataSourceDisableException disableException = null;
下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 最好的功能
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall
use-global-data-source-stat: true
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
package com.springdate.config; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; import java.util.HashMap; import java.util.Map; @Configuration public class DruidConfig { // 将文件绑定事件 @ConfigurationProperties(prefix = "spring.datasource") @Bean public DataSource dataSource() { return new DruidDataSource(); } //配置 Druid 监控管理后台的Servlet; //因为SpringBoot内置 Servlet 容器时没有web.xml文件,所以使用 Spring Boot 的注册 Servlet 方式 @Bean public ServletRegistrationBean statViewServlet() { ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); // 这些参数可以在 com.alibaba.druid.support.http.StatViewServlet // druid数据库 http://localhost:8080/druid/login.html // 的父类 com.alibaba.druid.support.http.ResourceServlet 中找到 Map<String, String> initParams = new HashMap<>(); initParams.put("loginUsername", "admin"); //后台管理界面的登录账号 initParams.put("loginPassword", "123456"); //后台管理界面的登录密码 }
//后台允许谁可以访问 //initParams.put("allow", "localhost"):表示只有本机可以访问 //initParams.put("allow", ""):为空或者为null时,表示允许所有访问 initParams.put("allow", ""); //deny:Druid 后台拒绝谁访问 //initParams.put("kuangshen", "192.168.1.20");表示禁止此ip访问 //设置初始化参数 bean.setInitParameters(initParams); return bean; }
//过滤的功能 @Bean public FilterRegistrationBean WebStatFilter() { FilterRegistrationBean bean = new FilterRegistrationBean(); //设置过滤器 bean.setFilter(new WebStatFilter()); //可以有啥请求呀 HashMap<String, String> initparamenters = new HashMap<>(); //这些内容不进行统计 initparamenters.put("exclusions", "*.js,*.css,/druid/*"); return bean; }
package com.springdate.Controller; //测试 /** * 整合jdbcTemplate */ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Map; @RestController public class jdbc { @Autowired JdbcTemplate jdbcTemplate; //查询书籍看所有信息 @GetMapping("/userlist") public List<Map<String, Object>> userList(){ String sql = "SELECT * FROM account"; List<Map<String, Object>> lists_maps = jdbcTemplate.queryForList(sql); return lists_maps; }
官网地址:http://localhost:8080/druid/login.html
// 的父类 com.alibaba.druid.support.http.ResourceServlet 中找到 Map<String, String> initParams = new HashMap<>(); initParams.put("loginUsername", "admin"); //后台管理界面的登录账号 initParams.put("loginPassword", "123456"); //后台管理界面的登录密码
启动程序
package com.springdate; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringbootSpringdate04Application { public static void main(String[] args) { SpringApplication.run(SpringbootSpringdate04Application.class, args); } }
"C:\Program Files\Java\jdk1.8.0_171\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:D:\IDEA\com.text\IntelliJ IDEA 2020.1.2\lib\idea_rt.jar=52650:D:\IDEA\com.text\IntelliJ IDEA 2020.1.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_171\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\rt.jar;D:\maven-workspace\spaceVideospringboot\springboot-springdate04\target\classes;C:\Users\MZFAITHDREAM\.m2\repository\com\jpattern\jporm-jdbctemplate\5.3.0\jporm-jdbctemplate-5.3.0.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\jpattern\jporm\5.3.0\jporm-5.3.0.jar;C:\Users\MZFAITHDREAM\.m2\repository\log4j\log4j\1.2.14\log4j-1.2.14.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\alibaba\druid-spring-boot-starter\1.2.9\druid-spring-boot-starter-1.2.9.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\alibaba\druid\1.2.9\druid-1.2.9.jar;C:\Users\MZFAITHDREAM\.m2\repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.7.4\spring-boot-autoconfigure-2.7.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot\2.7.4\spring-boot-2.7.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.7.4\spring-boot-starter-web-2.7.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter\2.7.4\spring-boot-starter-2.7.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.7.4\spring-boot-starter-logging-2.7.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\ch\qos\logback\logback-classic\1.2.11\logback-classic-1.2.11.jar;C:\Users\MZFAITHDREAM\.m2\repository\ch\qos\logback\logback-core\1.2.11\logback-core-1.2.11.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\log4j-to-slf4j-2.17.2.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;C:\Users\MZFAITHDREAM\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\yaml\snakeyaml\1.30\snakeyaml-1.30.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.7.4\spring-boot-starter-json-2.7.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.13.4\jackson-databind-2.13.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.4\jackson-annotations-2.13.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.13.4\jackson-core-2.13.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.4\jackson-datatype-jdk8-2.13.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.4\jackson-datatype-jsr310-2.13.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.4\jackson-module-parameter-names-2.13.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.7.4\spring-boot-starter-tomcat-2.7.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.65\tomcat-embed-core-9.0.65.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.65\tomcat-embed-el-9.0.65.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.65\tomcat-embed-websocket-9.0.65.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-web\5.3.23\spring-web-5.3.23.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-beans\5.3.23\spring-beans-5.3.23.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-webmvc\5.3.23\spring-webmvc-5.3.23.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-aop\5.3.23\spring-aop-5.3.23.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-context\5.3.23\spring-context-5.3.23.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-expression\5.3.23\spring-expression-5.3.23.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\2.7.4\spring-boot-starter-jdbc-2.7.4.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\zaxxer\HikariCP\4.0.3\HikariCP-4.0.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-jdbc\5.3.23\spring-jdbc-5.3.23.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-tx\5.3.23\spring-tx-5.3.23.jar;C:\Users\MZFAITHDREAM\.m2\repository\mysql\mysql-connector-java\8.0.30\mysql-connector-java-8.0.30.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-core\5.3.23\spring-core-5.3.23.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-jcl\5.3.23\spring-jcl-5.3.23.jar" com.springdate.SpringbootSpringdate04Application . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.4) 2022-10-03 10:21:26.173 INFO 21568 --- [ main] c.s.SpringbootSpringdate04Application : Starting SpringbootSpringdate04Application using Java 1.8.0_171 on HELLOWWORLD with PID 21568 (D:\maven-workspace\spaceVideospringboot\springboot-springdate04\target\classes started by MZFAITHDREAM in D:\maven-workspace\spaceVideospringboot\springboot-springdate04) 2022-10-03 10:21:26.177 INFO 21568 --- [ main] c.s.SpringbootSpringdate04Application : No active profile set, falling back to 1 default profile: "default" 2022-10-03 10:21:27.310 INFO 21568 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2022-10-03 10:21:27.310 INFO 21568 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2022-10-03 10:21:27.310 INFO 21568 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.65] 2022-10-03 10:21:27.610 INFO 21568 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2022-10-03 10:21:27.610 INFO 21568 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1383 ms 2022-10-03 10:21:28.031 INFO 21568 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2022-10-03 10:21:28.047 INFO 21568 --- [ main] c.s.SpringbootSpringdate04Application : Started SpringbootSpringdate04Application in 2.418 seconds (JVM running for 3.73) 2022-10-03 10:21:44.286 INFO 21568 --- [nio-8080-exec-9] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2022-10-03 10:21:44.286 INFO 21568 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2022-10-03 10:21:44.289 INFO 21568 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
输入了正确的用户名和密码
输入错误的用户名和密码
输入正确的用户名和密码
使用的是监听器
监听器的记录在上面图片的
C \Program Files\Java\jdk1.8.0_171\jre\lib\charsets.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\deploy.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\ext\access-bridge-64.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\ext\cldrdata.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\ext\dnsns.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\ext\jaccess.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\ext\jfxrt.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\ext\localedata.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\ext\nashorn.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunec.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunjce_provider.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunmscapi.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunpkcs11.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\ext\zipfs.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\javaws.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\jce.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\jfr.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\jfxswt.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\jsse.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\management-agent.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\plugin.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\resources.jar C \Program Files\Java\jdk1.8.0_171\jre\lib\rt.jar D \maven-workspace\spaceVideospringboot\springboot-springdate04\target\classes C \Users\MZFAITHDREAM\.m2\repository\com\jpattern\jporm-jdbctemplate\5.3.0\jporm-jdbctemplate-5.3.0.jar C \Users\MZFAITHDREAM\.m2\repository\com\jpattern\jporm\5.3.0\jporm-5.3.0.jar C \Users\MZFAITHDREAM\.m2\repository\log4j\log4j\1.2.14\log4j-1.2.14.jar C \Users\MZFAITHDREAM\.m2\repository\com\alibaba\druid-spring-boot-starter\1.2.9\druid-spring-boot-starter-1.2.9.jar C \Users\MZFAITHDREAM\.m2\repository\com\alibaba\druid\1.2.9\druid-1.2.9.jar C \Users\MZFAITHDREAM\.m2\repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar C \Users\MZFAITHDREAM\.m2\repository\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.7.4\spring-boot-autoconfigure-2.7.4.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot\2.7.4\spring-boot-2.7.4.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.7.4\spring-boot-starter-web-2.7.4.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter\2.7.4\spring-boot-starter-2.7.4.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.7.4\spring-boot-starter-logging-2.7.4.jar C \Users\MZFAITHDREAM\.m2\repository\ch\qos\logback\logback-classic\1.2.11\logback-classic-1.2.11.jar C \Users\MZFAITHDREAM\.m2\repository\ch\qos\logback\logback-core\1.2.11\logback-core-1.2.11.jar C \Users\MZFAITHDREAM\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\log4j-to-slf4j-2.17.2.jar C \Users\MZFAITHDREAM\.m2\repository\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar C \Users\MZFAITHDREAM\.m2\repository\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar C \Users\MZFAITHDREAM\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar C \Users\MZFAITHDREAM\.m2\repository\org\yaml\snakeyaml\1.30\snakeyaml-1.30.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.7.4\spring-boot-starter-json-2.7.4.jar C \Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.13.4\jackson-databind-2.13.4.jar C \Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.4\jackson-annotations-2.13.4.jar C \Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.13.4\jackson-core-2.13.4.jar C \Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.4\jackson-datatype-jdk8-2.13.4.jar C \Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.4\jackson-datatype-jsr310-2.13.4.jar C \Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.4\jackson-module-parameter-names-2.13.4.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.7.4\spring-boot-starter-tomcat-2.7.4.jar C \Users\MZFAITHDREAM\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.65\tomcat-embed-core-9.0.65.jar C \Users\MZFAITHDREAM\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.65\tomcat-embed-el-9.0.65.jar C \Users\MZFAITHDREAM\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.65\tomcat-embed-websocket-9.0.65.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-web\5.3.23\spring-web-5.3.23.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-beans\5.3.23\spring-beans-5.3.23.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-webmvc\5.3.23\spring-webmvc-5.3.23.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-aop\5.3.23\spring-aop-5.3.23.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-context\5.3.23\spring-context-5.3.23.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-expression\5.3.23\spring-expression-5.3.23.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\2.7.4\spring-boot-starter-jdbc-2.7.4.jar C \Users\MZFAITHDREAM\.m2\repository\com\zaxxer\HikariCP\4.0.3\HikariCP-4.0.3.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-jdbc\5.3.23\spring-jdbc-5.3.23.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-tx\5.3.23\spring-tx-5.3.23.jar C \Users\MZFAITHDREAM\.m2\repository\mysql\mysql-connector-java\8.0.30\mysql-connector-java-8.0.30.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-core\5.3.23\spring-core-5.3.23.jar C \Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-jcl\5.3.23\spring-jcl-5.3.23.jar D \IDEA\com.text\IntelliJ IDEA 2020.1.2\lib\idea_rt.jar