• Springboot+druid


    1.Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。

    2.配置maven

    1. <dependency>
    2. <groupId>com.alibaba</groupId>
    3. <artifactId>druid</artifactId>
    4. <version>${druid-version}</version>
    5. </dependency>

    3.druid配置

    1. spring:
    2. datasource:
    3. type: com.alibaba.druid.pool.DruidDataSource
    4. druid:
    5. driverClassName: com.mysql.cj.jdbc.Driver
    6. url: jdbc:mysql://localhost:3306/data_one?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useSSL=false
    7. username: root
    8. password: root
    9. # 初始化大小,最小,最大
    10. initial-size: 10
    11. max-active: 100
    12. min-idle: 10
    13. # 配置获取连接等待超时的时间
    14. max-wait: 60000
    15. # 打开PSCache,并且指定每个连接上PSCache的大小
    16. pool-prepared-statements: true
    17. # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    18. max-pool-prepared-statement-per-connection-size: 20
    19. # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    20. time-between-eviction-runs-millis: 60000
    21. # 配置一个连接在池中最小生存的时间,单位是毫秒
    22. min-evictable-idle-time-millis: 300000
    23. max-evictable-idle-time-millis: 60000
    24. validation-query: SELECT 1 FROM DUAL
    25. # validation-query-timeout: 5000
    26. test-on-borrow: false
    27. test-on-return: false
    28. test-while-idle: true
    29. # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
    30. connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    31. #filters: #配置多个英文逗号分隔(统计,sql注入,log4j过滤)
    32. filters: stat,wall
    33. stat-view-servlet:
    34. enabled: true
    35. url-pattern: /druid/*

    4.打开Druid的监控统计功能

    Druid的监控统计功能是通过filter-chain扩展实现,如果你要打开监控统计功能,配置StatFilter

    http://localhost:8007/druid/login.html

    1. /**
    2. * 配置 Druid 监控界面
    3. */
    4. @Bean
    5. public ServletRegistrationBean statViewServlet(){
    6. ServletRegistrationBean srb =
    7. new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
    8. //设置控制台管理用户
    9. srb.addInitParameter("loginUsername","root");
    10. srb.addInitParameter("loginPassword","root");
    11. //是否可以重置数据
    12. srb.addInitParameter("resetEnable","false");
    13. return srb;
    14. }

     

    5.配置过滤器

    1. @Bean
    2. public FilterRegistrationBean statFilter(){
    3. //创建过滤器
    4. FilterRegistrationBean frb =
    5. new FilterRegistrationBean(new WebStatFilter());
    6. //设置过滤器过滤路径
    7. frb.addUrlPatterns("/*");
    8. //忽略过滤的形式
    9. frb.addInitParameter("exclusions",
    10. "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
    11. return frb;
    12. }
    13. }

    6.jdbc操作

    1. /**
    2. * JDBC操作配置
    3. */
    4. @Bean(name = "dataOneTemplate")
    5. public JdbcTemplate jdbcTemplate (@Autowired DruidDataSource dataSource){
    6. return new JdbcTemplate(dataSource) ;
    7. }

    7.Druid数据库连接池配置文件

    1. /**
    2. * Druid数据库连接池配置文件
    3. */
    4. @Configuration
    5. public class DruidConfig {
    6. private static final Logger logger = LoggerFactory.getLogger(DruidConfig.class);
    7. @Value("${spring.datasource.druid.url}")
    8. private String dbUrl;
    9. @Value("${spring.datasource.druid.username}")
    10. private String username;
    11. @Value("${spring.datasource.druid.password}")
    12. private String password;
    13. @Value("${spring.datasource.druid.driverClassName}")
    14. private String driverClassName;
    15. @Value("${spring.datasource.druid.initial-size}")
    16. private int initialSize;
    17. @Value("${spring.datasource.druid.max-active}")
    18. private int maxActive;
    19. @Value("${spring.datasource.druid.min-idle}")
    20. private int minIdle;
    21. @Value("${spring.datasource.druid.max-wait}")
    22. private int maxWait;
    23. @Value("${spring.datasource.druid.pool-prepared-statements}")
    24. private boolean poolPreparedStatements;
    25. @Value("${spring.datasource.druid.max-pool-prepared-statement-per-connection-size}")
    26. private int maxPoolPreparedStatementPerConnectionSize;
    27. @Value("${spring.datasource.druid.time-between-eviction-runs-millis}")
    28. private int timeBetweenEvictionRunsMillis;
    29. @Value("${spring.datasource.druid.min-evictable-idle-time-millis}")
    30. private int minEvictableIdleTimeMillis;
    31. @Value("${spring.datasource.druid.max-evictable-idle-time-millis}")
    32. private int maxEvictableIdleTimeMillis;
    33. @Value("${spring.datasource.druid.validation-query}")
    34. private String validationQuery;
    35. @Value("${spring.datasource.druid.test-while-idle}")
    36. private boolean testWhileIdle;
    37. @Value("${spring.datasource.druid.test-on-borrow}")
    38. private boolean testOnBorrow;
    39. @Value("${spring.datasource.druid.test-on-return}")
    40. private boolean testOnReturn;
    41. @Value("${spring.datasource.druid.filters}")
    42. private String filters;
    43. @Value("{spring.datasource.druid.connection-properties}")
    44. private String connectionProperties;
    45. /**
    46. * Druid 连接池配置
    47. */
    48. @Bean //声明其为Bean实例
    49. public DruidDataSource dataSource() {
    50. DruidDataSource datasource = new DruidDataSource();
    51. datasource.setUrl(dbUrl);
    52. datasource.setUsername(username);
    53. datasource.setPassword(password);
    54. datasource.setDriverClassName(driverClassName);
    55. datasource.setInitialSize(initialSize);
    56. datasource.setMinIdle(minIdle);
    57. datasource.setMaxActive(maxActive);
    58. datasource.setMaxWait(maxWait);
    59. datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
    60. datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
    61. datasource.setMaxEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
    62. datasource.setValidationQuery(validationQuery);
    63. datasource.setTestWhileIdle(testWhileIdle);
    64. datasource.setTestOnBorrow(testOnBorrow);
    65. datasource.setTestOnReturn(testOnReturn);
    66. datasource.setPoolPreparedStatements(poolPreparedStatements);
    67. datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
    68. try {
    69. datasource.setFilters(filters);
    70. } catch (Exception e) {
    71. logger.error("druid configuration initialization filter", e);
    72. }
    73. datasource.setConnectionProperties(connectionProperties);
    74. return datasource;
    75. }

  • 相关阅读:
    电脑工作者缓解眼部疲劳问题的工具分享
    python自动化测试(十一):写入、读取、修改Excel表格的数据
    iOS-2023面试最新-逆向题-视觉
    MySQL的三种日志文件
    docker-compose 升级
    springmvc工作流程面试题(附答案)
    SQLServer过滤数据
    JS基础----call和apply方法、代理Proxy的使用、JS中defineProperty用法
    C++PrimerPlus(第6版)中文版:Chapter13.3多态共有继承例子(重点讲虚函数):usebrass2.cpp
    【静态代码扫描服务】python实现-附ChatGPT解析
  • 原文地址:https://blog.csdn.net/qq_44981598/article/details/132754963