2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
一、新建一个Configuration类: @Configuration public class DataSourceConfig implements WebMvcConfigurer { @ConfigurationProperties("spring.datasource") @ConditionalOnProperty(name = "spring.datasource.type", havingValue = "com.alibaba.druid.pool.DruidDataSource") @Bean public DataSource dataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); return druidDataSource; } /** * 开启 Druid 数据源内置监控页面 * * @return */ @Bean("statViewServlet") public ServletRegistrationBean statViewServlet() { StatViewServlet statViewServlet = new StatViewServlet(); //向容器中注入 StatViewServlet,并将其路径映射设置为 /druid/* ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(statViewServlet, "/druid/*"); //配置监控页面访问的账号和密码(选配) servletRegistrationBean.addInitParameter("loginUsername", "admin"); servletRegistrationBean.addInitParameter("loginPassword", "123456"); return servletRegistrationBean; } @Bean public StatFilter statFilter() { StatFilter statFilter = new StatFilter(); //慢sql记录 statFilter.setLogSlowSql(true); statFilter.setMergeSql(true); //超过多少时间为慢sql statFilter.setSlowSqlMillis(5000); return statFilter; } /** * 配置一个web监控的filter */ @Bean("webStatFilter") @ConditionalOnClass(DruidDataSource.class) public FilterRegistrationBean webStatFilter(){ Map<String,String> initParams = new HashMap<>(); // 这些不进行统计 initParams.put("exclusions","*.js,*.css,*.gif,*.png,/druid/*"); FilterRegistrationBean bean = new FilterRegistrationBean(); //白名单 //bean.addInitParameter("allow", "");//多个ip逗号隔开 //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page. //servletRegistrationBean.addInitParameter("deny", ""); WebStatFilter webStatFilter= new WebStatFilter(); webStatFilter.setSessionStatEnable(true); bean.setFilter(webStatFilter); bean.setInitParameters(initParams); bean.setUrlPatterns(Arrays.asList("/*")); return bean; } }
2. Lisää seuraava kokoonpano tiedostoon application.yml:
spring: jackson: ## 默认序列化时间格式 date-format: yyyy-MM-dd HH:mm:ss ## 默认序列化时区 time-zone: GMT+8 datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/fastermaker?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true username: root password: 1234 # 初始化大小,最小,最大 initialSize: 1 minIdle: 3 maxActive: 20 # 配置获取连接等待超时的时间 maxWait: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 minEvictableIdleTimeMillis: 30000 validationQuery: select 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false # 打开PSCache,并且指定每个连接上PSCache的大小 poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 filters: stat,wall,slf4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000