From 939b5e669c9bab83b7c9aaee3b285d8e09670910 Mon Sep 17 00:00:00 2001
From: songhuangfeng123 <shf18767906695@163.com>
Date: Tue, 19 Jul 2022 17:54:02 +0800
Subject: [PATCH] 事故快报
---
safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/database/DruidConfig.java | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 165 insertions(+), 0 deletions(-)
diff --git a/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/database/DruidConfig.java b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/database/DruidConfig.java
new file mode 100644
index 0000000..d7922fd
--- /dev/null
+++ b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/database/DruidConfig.java
@@ -0,0 +1,165 @@
+package com.gkhy.safePlatform.config.database;
+
+import com.alibaba.druid.filter.stat.StatFilter;
+import com.alibaba.druid.support.http.StatViewServlet;
+import com.alibaba.druid.support.http.WebStatFilter;
+import com.alibaba.druid.wall.WallConfig;
+import com.alibaba.druid.wall.WallFilter;
+import com.atomikos.icatch.jta.UserTransactionImp;
+import com.atomikos.icatch.jta.UserTransactionManager;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.jta.atomikos.AtomikosDataSourceBean;
+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 org.springframework.context.annotation.Primary;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.jta.JtaTransactionManager;
+
+import javax.sql.DataSource;
+import javax.transaction.UserTransaction;
+import java.util.Properties;
+
+/**
+ * Druid配置
+ *
+ *
+ */
+@Component
+@Configuration
+public class DruidConfig {
+
+ @Value("${spring.datasource.type}")
+ private String datasourceClass;
+
+ @Bean(name = "dsGoalManage")
+ @Primary
+ @Autowired
+ public DataSource dsAccount(Environment env) {
+ AtomikosDataSourceBean ds = new AtomikosDataSourceBean();
+ Properties prop = build(env, "spring.datasource.goalmanage.");
+// ds.setXaDataSourceClassName("com.alibaba.druid.pool.xa.DruidXADataSource");
+ ds.setXaDataSourceClassName(datasourceClass);
+ ds.setUniqueResourceName("goalmanage");
+ ds.setPoolSize(2);
+ ds.setXaProperties(prop);
+ return ds;
+
+ }
+
+
+ @Autowired
+ @Primary
+ @Bean(name = "dsEmergency")
+ public AtomikosDataSourceBean dsDoublePrevent(Environment env) {
+ AtomikosDataSourceBean ds = new AtomikosDataSourceBean();
+ Properties prop = build(env, "spring.datasource.emergency.");
+// ds.setXaDataSourceClassName("com.alibaba.druid.pool.xa.DruidXADataSource");
+ ds.setXaDataSourceClassName(datasourceClass);
+ ds.setUniqueResourceName("emergency");
+ ds.setPoolSize(2);
+ ds.setXaProperties(prop);
+ return ds;
+ }
+
+ @Autowired
+ @Primary
+ @Bean(name = "dsIncidentManage")
+ public AtomikosDataSourceBean dsSafeCheck(Environment env) {
+ AtomikosDataSourceBean ds = new AtomikosDataSourceBean();
+ Properties prop = build(env, "spring.datasource.incidentmanage.");
+ ds.setXaDataSourceClassName(datasourceClass);
+// ds.setXaDataSourceClassName("com.alibaba.druid.pool.xa.DruidXADataSource");
+ ds.setUniqueResourceName("incidentmanage");
+ ds.setPoolSize(2);
+ ds.setXaProperties(prop);
+ return ds;
+ }
+
+
+ /**
+ * 注入事物管理器
+ * @return
+ */
+ @Bean(name = "xatx")
+ public JtaTransactionManager regTransactionManager () {
+ UserTransactionManager userTransactionManager = new UserTransactionManager();
+ UserTransaction userTransaction = new UserTransactionImp();
+ return new JtaTransactionManager(userTransaction, userTransactionManager);
+ }
+
+
+ private Properties build(Environment env, String prefix) {
+
+ Properties prop = new Properties();
+ prop.put("url", env.getProperty(prefix + "url"));
+ prop.put("username", env.getProperty(prefix + "username"));
+ prop.put("password", env.getProperty(prefix + "password"));
+ prop.put("driverClassName", env.getProperty(prefix + "driver-class-name", ""));
+// prop.put("initialSize", env.getProperty(prefix + "initialSize", Integer.class));
+// prop.put("maxActive", env.getProperty(prefix + "maxActive", Integer.class));
+// prop.put("minIdle", env.getProperty(prefix + "minIdle", Integer.class));
+// prop.put("maxWait", env.getProperty(prefix + "maxWait", Integer.class));
+// prop.put("poolPreparedStatements", env.getProperty(prefix + "poolPreparedStatements", Boolean.class));
+//
+// prop.put("maxPoolPreparedStatementPerConnectionSize",
+// env.getProperty(prefix + "maxPoolPreparedStatementPerConnectionSize", Integer.class));
+//
+// prop.put("maxPoolPreparedStatementPerConnectionSize",
+// env.getProperty(prefix + "maxPoolPreparedStatementPerConnectionSize", Integer.class));
+// prop.put("validationQuery", env.getProperty(prefix + "validationQuery"));
+// prop.put("validationQueryTimeout", env.getProperty(prefix + "validationQueryTimeout", Integer.class));
+// prop.put("testOnBorrow", env.getProperty(prefix + "testOnBorrow", Boolean.class));
+// prop.put("testOnReturn", env.getProperty(prefix + "testOnReturn", Boolean.class));
+// prop.put("testWhileIdle", env.getProperty(prefix + "testWhileIdle", Boolean.class));
+// prop.put("timeBetweenEvictionRunsMillis",
+// env.getProperty(prefix + "timeBetweenEvictionRunsMillis", Integer.class));
+// prop.put("minEvictableIdleTimeMillis", env.getProperty(prefix + "minEvictableIdleTimeMillis", Integer.class));
+// prop.put("filters", env.getProperty(prefix + "filters"));
+
+ return prop;
+ }
+
+// @Bean
+ public ServletRegistrationBean druidServlet() {
+ ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
+
+ //控制台管理用户,加入下面2行 进入druid后台就需要登录
+ //servletRegistrationBean.addInitParameter("loginUsername", "admin");
+ //servletRegistrationBean.addInitParameter("loginPassword", "admin");
+ return servletRegistrationBean;
+ }
+
+// @Bean
+ public FilterRegistrationBean filterRegistrationBean() {
+ FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
+ filterRegistrationBean.setFilter(new WebStatFilter());
+ filterRegistrationBean.addUrlPatterns("/*");
+ filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
+ filterRegistrationBean.addInitParameter("profileEnable", "true");
+ return filterRegistrationBean;
+ }
+
+// @Bean
+ public StatFilter statFilter(){
+ StatFilter statFilter = new StatFilter();
+ statFilter.setLogSlowSql(true); //slowSqlMillis用来配置SQL慢的标准,执行时间超过slowSqlMillis的就是慢。
+ statFilter.setMergeSql(true); //SQL合并配置
+ statFilter.setSlowSqlMillis(1000);//slowSqlMillis的缺省值为3000,也就是3秒。
+ return statFilter;
+ }
+
+// @Bean
+ public WallFilter wallFilter(){
+ WallFilter wallFilter = new WallFilter();
+ //允许执行多条SQL
+ WallConfig config = new WallConfig();
+ config.setMultiStatementAllow(true);
+ wallFilter.setConfig(config);
+ return wallFilter;
+ }
+
+}
\ No newline at end of file
--
Gitblit v1.9.2