From 2f4ce99c97e82938cde1520c4c21766dd06e1c2a Mon Sep 17 00:00:00 2001 From: "453530270@qq.com" Date: Sun, 15 Sep 2024 16:14:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=95=E5=85=A5=E8=BF=9E=E6=8E=A5=E6=B1=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 + .../app/bcms/jchat/config/DruidConfig.java | 115 ++++++++++++++++++ .../java/app/bcms/jchat/config/EnvConfig.java | 28 +++++ .../app/bcms/jchat/config/WebMvcConfig.java | 21 ++++ .../app/bcms/jchat/constant/ChConstant.java | 21 ++++ 5 files changed, 190 insertions(+) create mode 100644 src/main/java/app/bcms/jchat/config/DruidConfig.java create mode 100644 src/main/java/app/bcms/jchat/config/EnvConfig.java create mode 100644 src/main/java/app/bcms/jchat/config/WebMvcConfig.java create mode 100644 src/main/java/app/bcms/jchat/constant/ChConstant.java diff --git a/pom.xml b/pom.xml index 1ca120b..cac15a9 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,11 @@ mybatis-spring-boot-starter 2.2.2 + + com.alibaba + druid + 1.2.16 + com.mysql diff --git a/src/main/java/app/bcms/jchat/config/DruidConfig.java b/src/main/java/app/bcms/jchat/config/DruidConfig.java new file mode 100644 index 0000000..feb5a5a --- /dev/null +++ b/src/main/java/app/bcms/jchat/config/DruidConfig.java @@ -0,0 +1,115 @@ +package app.bcms.jchat.config; + + +import app.bcms.jchat.constant.ChConstant; +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.support.http.StatViewServlet; +import com.alibaba.druid.support.http.WebStatFilter; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.SqlSessionTemplate; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.beans.factory.annotation.Qualifier; +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.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; + +import javax.servlet.Filter; +import javax.servlet.Servlet; +import javax.sql.DataSource; +import java.io.FileReader; +import java.util.Properties; + + +/** + * druid 数据库链接配置 + * 涉及多数据源,此处需要明确指定扫描包的位置 + */ +@Configuration +@MapperScan(basePackages = {"app.bcms.*.mapper"},sqlSessionFactoryRef = "sqlSessionFactory") +public class DruidConfig { + private Log log = LogFactory.getLog(DruidConfig.class); //初始化日志 + static final String CHMAPPER_LOCATION = "classpath:mappers/*xml"; + + /** + * 配置为主要数据源 + * @return + * @throws Exception + */ + + @Bean(name = "dataSource") + @Qualifier("dataSource") + public DataSource druidDataSource() throws Exception{ + //配置文件的真实路径 + String dbconf = ChConstant.WORK_DIR + ChConstant.DB_CONF; + Properties prop = new Properties(); + prop.load(new FileReader(dbconf)); + log.info("master druid:"+dbconf); + //使用datasource方式 + DruidDataSource dataSource = new DruidDataSource(); + String dburl = prop.getProperty("druid.url"); + dataSource.setUrl(dburl); + dataSource.setDriverClassName(prop.getProperty("druid.driver-class")); + dataSource.setUsername(prop.getProperty("druid.username")); + dataSource.setPassword(prop.getProperty("druid.password")); + + return dataSource; + } + + + @Bean + public ServletRegistrationBean druidServlet() { + // 进行 druid 监控的配置处理 + ServletRegistrationBean srb = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*"); + // 白名单 + srb.addInitParameter("allow", "127.0.0.1"); + // 黑名单 + //srb.addInitParameter("deny", "192.168.31.253"); + // 用户名 + srb.addInitParameter("loginUsername", "root"); + // 密码 + srb.addInitParameter("loginPassword", "xc1123"); + // 是否可以重置数据源 + srb.addInitParameter("resetEnable", "false"); + log.info("druid监控配置:" + srb); + return srb; + } + + @Bean + public FilterRegistrationBean filterRegistrationBean() { + FilterRegistrationBean frb = new FilterRegistrationBean<>(); + frb.setFilter(new WebStatFilter()); + // 所有请求进行监控处理 + frb.addUrlPatterns("/*"); + // 排除名单 + frb.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*"); + return frb; + } + + + @Bean(name="sqlSessionFactory") + public SqlSessionFactory chSqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception { + SqlSessionFactoryBean bean=new SqlSessionFactoryBean(); + bean.setDataSource(dataSource); + bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(DruidConfig.CHMAPPER_LOCATION)); + log.info("chSqlSessionFactory"+bean.toString()); + return bean.getObject(); + } + + //配置事务 + @Bean(name="transactionManager") + public DataSourceTransactionManager testTransactionManager(@Qualifier("dataSource") DataSource dataSource) { + return new DataSourceTransactionManager(dataSource); + } + +// + @Bean(name="sqlSessionTemplate") + public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) { + return new SqlSessionTemplate(sqlSessionFactory); + } +} \ No newline at end of file diff --git a/src/main/java/app/bcms/jchat/config/EnvConfig.java b/src/main/java/app/bcms/jchat/config/EnvConfig.java new file mode 100644 index 0000000..1b9397c --- /dev/null +++ b/src/main/java/app/bcms/jchat/config/EnvConfig.java @@ -0,0 +1,28 @@ +package app.bcms.jchat.config; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; + +@Configuration +public class EnvConfig { + private Log log = LogFactory.getLog(EnvConfig.class); + + @Autowired + private Environment env; + + /** + * 获取大数据链接信息 + * 项目初始化的时候完成操作 + * @return + */ + @Bean + public static String yxDbConf(){ + //读取当前运行位置 + String curPath=System.getProperty("user.dir"); + return curPath; + } +} \ No newline at end of file diff --git a/src/main/java/app/bcms/jchat/config/WebMvcConfig.java b/src/main/java/app/bcms/jchat/config/WebMvcConfig.java new file mode 100644 index 0000000..5e793f9 --- /dev/null +++ b/src/main/java/app/bcms/jchat/config/WebMvcConfig.java @@ -0,0 +1,21 @@ +package app.bcms.jchat.config; + +import com.xtmis.suu.constant.ChConstant; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; + +/** + * web mvc 的控制类 + */ + +public class WebMvcConfig extends WebMvcConfigurationSupport { + /** + * 使用该类会使 application中的配置失效 + * 静态资源映射 + * @param registry + */ + protected void addResourceHandlers(ResourceHandlerRegistry registry) { + String resDir = ChConstant.WORK_DIR+ChConstant.UPLOAD_PATH; + registry.addResourceHandler("/uploads/**").addResourceLocations("file:"+resDir); + } +} diff --git a/src/main/java/app/bcms/jchat/constant/ChConstant.java b/src/main/java/app/bcms/jchat/constant/ChConstant.java new file mode 100644 index 0000000..1346b4f --- /dev/null +++ b/src/main/java/app/bcms/jchat/constant/ChConstant.java @@ -0,0 +1,21 @@ +package app.bcms.jchat.constant; + + +import com.xtmis.suu.config.EnvConfig; + +/** + * 系统常量 + */ +public class ChConstant { + //项目运行目录 + public static final String WORK_DIR = EnvConfig.yxDbConf(); + + //数据库链接文件路径 + public static final String DB_CONF = "/conf/db.properties"; + // 文件上传目录 + public static final String UPLOAD_PATH="/uploads"; + + //分页大小 + public static final int PAGESIZE = 12; +} +