• 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. }

  • 相关阅读:
    VoLTE端到端业务详解 | S1AP协议
    程序员的技术VS业务,哪个更重要?
    华为机试题:HJ3 明明的随机数
    矩阵的运算规则
    【UE4】打包失败 Failed to build UATTempProj.proj
    电脑版微信文件存储在哪个文件夹可以找到
    【ChatGPT】ChatGPT发展历史
    vue3里面vant组件的标签页使用?
    小程序和uniapp中scroll-view触底加载
    Hive SQL 开发指南(三)优化及常见异常
  • 原文地址:https://blog.csdn.net/qq_44981598/article/details/132754963