当前位置: 首页 > wzjs >正文

重庆网站建设入门培训wordpress在线人数

重庆网站建设入门培训,wordpress在线人数,毕业设计做网站有哪些方面,模板建站多少钱概述 Spring Boot: Spring Boot是一个基于Spring框架的开源Java开发框架,旨在简化Spring应用程序的开发、配置和部署。它提供了一种快速、敏捷的方式来构建独立的、生产级别的Spring应用程序,同时还提供了许多开箱即用的功能和工具&#xff0…

概述


Spring Boot:
Spring Boot是一个基于Spring框架的开源Java开发框架,旨在简化Spring应用程序的开发、配置和部署。它提供了一种快速、敏捷的方式来构建独立的、生产级别的Spring应用程序,同时还提供了许多开箱即用的功能和工具,如自动配置、内嵌式Web容器、健康检查、监控和管理等。

Mybatis-Plus:
Mybatis-Plus是一个基于Mybatis的增强工具,它在Mybatis的基础上扩展了许多实用的功能,可以帮助开发人员更加高效地完成数据库操作,提高开发效率和代码质量。

Druid:
Druid是一个高性能的数据库连接池,它可以与各种关系型数据库进行集成,如MySQL、Oracle、PostgreSQL等。Druid提供了可扩展、高可用、高性能的数据库连接管理功能,可以帮助开发人员更加高效地完成数据库操作。

   有了基本的理解 接下来我们用这些组合实现多数据源功能

🍹1. pom.xml 添加依赖


加入一些必要的pom依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--spring-boot-web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.2</version></dependency><!-- druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.16</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--   mysql     --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency>

🛑2. application.yml


spring:datasource:druid:initial-size: 5min-idle: 5max-active: 5db1:url: jdbc:mysql://localhost:6030/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=trueusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverdb2:url: jdbc:mysql://localhost:6030/demo1?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=trueusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:configuration:map-underscore-to-camel-case: false

⏳ 3. 排除默认加载


在项目启动类中排除druid属性默认加载(也可以直接在配置中加载 我的项目配置没有成功就直接用这种方式了)
不加这个多数据源可能无法都加载出来

@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)

🛎 4. Mybatis-Plus 配置


添加mybatisplus的多数据源配置

@Configuration
public class MybatisPlusConfig {/** mybatis 3.4.1 pagination config start ***/@Beanpublic PaginationInterceptor paginationInterceptor() {//        return new PaginationInterceptor();PaginationInterceptor paginationInterceptor = new PaginationInterceptor();paginationInterceptor.setDialectType("postgresql");return paginationInterceptor;}/*** SQL执行效率插件(优化sql的执行效率 不需要可以不加)* */@Bean@Profile({"dev","qa"})// 设置 dev test 环境开启public PerformanceInterceptor performanceInterceptor() {PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();performanceInterceptor.setMaxTime(1000);performanceInterceptor.setFormat(true);return performanceInterceptor;}/*** 多数据源的创建 有几个就写几个 */@Bean(name = "db1")@ConfigurationProperties(prefix = "spring.datasource.druid.db1" )public DataSource db1() {return DruidDataSourceBuilder.create().build();}@Bean(name = "db2")@ConfigurationProperties(prefix = "spring.datasource.druid.db2" )public DataSource db2() {return DruidDataSourceBuilder.create().build();}/*** 动态数据源配置* @return*/@Bean@Primarypublic DataSource multipleDataSource(@Qualifier("db1") DataSource db1, @Qualifier("db2") DataSource db2) {DynamicDataSource dynamicDataSource = new DynamicDataSource();Map< Object, Object > targetDataSources = new HashMap<>();targetDataSources.put(DataSourceEnum.DB1.getValue(), db1);targetDataSources.put(DataSourceEnum.DB2.getValue(), db2);//添加数据源dynamicDataSource.setTargetDataSources(targetDataSources);//设置默认数据源dynamicDataSource.setDefaultTargetDataSource(db1);return dynamicDataSource;}@Bean("sqlSessionFactory")public SqlSessionFactory sqlSessionFactory() throws Exception {MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();sqlSessionFactory.setDataSource(multipleDataSource(db1(),db2()));//sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapper/*/*Mapper.xml"));MybatisConfiguration configuration = new MybatisConfiguration();//configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);configuration.setJdbcTypeForNull(JdbcType.NULL);configuration.setMapUnderscoreToCamelCase(true);configuration.setCacheEnabled(false);sqlSessionFactory.setConfiguration(configuration);sqlSessionFactory.setPlugins(new Interceptor[]{//PerformanceInterceptor(),OptimisticLockerInterceptor()paginationInterceptor()//添加分页功能});//sqlSessionFactory.setGlobalConfig(globalConfiguration());return sqlSessionFactory.getObject();}
}

🪐5. 多数据源实例:


🔒 5.1 DataSourceEnum


public enum DataSourceEnum {DB1("db1"),DB2("db2");private String value;DataSourceEnum(String value){this.value=value;}public String getValue() {return value;}
}

🔓 5.2 DataSource


自定义多数据源切换:

/** * 自定义多数据源切换* @author zzh* @date 2023/4/28 15:19:21*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface DataSource {DataSourceEnum value() default DataSourceEnum.DB1;
}

🔏 5.3 DataSourceAspect


切面处理类:

@Aspect
@Order(1)
@Component
public class DataSourceAspect {@Pointcut("@annotation(com.taosdata.example.mybatisplusdemo.datasource.annotation.DataSource)"+ "|| @within(com.taosdata.example.mybatisplusdemo.datasource.annotation.DataSource)")public void dsPc() {}@Before("dsPc()  && @annotation(dataSource)")public void doBefore(DataSource dataSource)  {DynamicDataSourceContextHolder.setDataSourceType(dataSource.value().getValue());}@After("dsPc()")public void doAfter() {DynamicDataSourceContextHolder.clearDataSourceType();}}

🔐 5.4 DruidConfiguration


driud配置类 配置启动视图和过滤规则

@Configuration
public class DruidConfiguration {@Beanpublic ServletRegistrationBean startViewServlet(){ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");// IP白名单servletRegistrationBean.addInitParameter("allow","127.0.0.1");// IP黑名单(共同存在时,deny优先于allow)servletRegistrationBean.addInitParameter("deny","127.0.0.1");//控制台管理用户servletRegistrationBean.addInitParameter("loginUsername","admin");servletRegistrationBean.addInitParameter("loginPassword","123456");//是否能够重置数据servletRegistrationBean.addInitParameter("resetEnable","false");return servletRegistrationBean;}@Beanpublic FilterRegistrationBean statFilter(){FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());//添加过滤规则filterRegistrationBean.addUrlPatterns("/*");//忽略过滤的格式filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");return filterRegistrationBean;}
}

🔏 5.5 DynamicDataSource


动态数据源决策

public class DynamicDataSource extends AbstractRoutingDataSource {/*** @description:  动态数据源决策* @return*/@Overrideprotected Object determineCurrentLookupKey() {String dataSourceType = DynamicDataSourceContextHolder.getDataSourceType();return dataSourceType;}
}

🔓 5.6 DynamicDataSourceContextHolder


多数据源上下文

public class DynamicDataSourceContextHolder {public static final Logger log = LoggerFactory.getLogger(DynamicDataSourceContextHolder.class);/*** 使用ThreadLocal维护变量,ThreadLocal为每个使用该变量的线程提供独立的变量副本,* 所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。*/private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>();/*** 设置数据源的变量*/public static void setDataSourceType(String dsType) {log.info("切换到{}数据源", dsType);CONTEXT_HOLDER.set(dsType);}/*** 获得数据源的变量*/public static String getDataSourceType() {return CONTEXT_HOLDER.get();}/*** 清空数据源变量*/public static void clearDataSourceType() {CONTEXT_HOLDER.remove();}
}

http://www.dtcms.com/wzjs/572569.html

相关文章:

  • 德清做网站一个网站要多少钱
  • 个人备案之后用于商城网站免费开网店的一件代发
  • 温州专业营销网站建设wordpress新建页面是空白的
  • 网站蜘蛛爬行在线图片编辑免费
  • 图书馆门户网站建设莱芜网站推广
  • 东莞公司做网站八爪鱼磁力搜索引擎
  • 百度网站推广网络wordpress 支持php7.1
  • 专门教做甜品的网站wordpress地图导航插件
  • 怎么上传视频到公司网站网站首页默认的文件名一般为
  • 免费素材网站下载海淘网站是谁做的
  • 房屋租赁系统网站开发班级优化大师官网下载
  • 关于网站开发的软件开发文档
  • 网站建设的步骤是什么东莞市网站seo
  • 深圳品牌网站设计模板型网站建设
  • 织梦网站图片移动徐汇苏州网站建设
  • 广州网站优化实战新任上海市领导调整公示
  • 网站建设公司推广方案seo二级目录
  • wordpress 邀请码插件官网seo是什么意思
  • 网站做备案需要多久二级备案域名购买
  • 宁波高质量品牌网站设计厂家网站推广是怎么推广的
  • 莒南县建设局网站网站开发和ipv6
  • 深圳建站定制公司玉溪住房和城乡建设局网站
  • 企业在线管理系统石家庄seo优化公司
  • 建设银行网站 开户行怎么查游戏编程软件
  • 源码网站程序html简单登录页面代码
  • 资讯类网站建设方案书妇科网站源码
  • 导航网站优化一个官网
  • 政务网站建设步骤北京网站的建立
  • 怎样做网站制作网站域名注册证书查询
  • 买奢侈品去哪个网站有正品杭州网站建设哪家快速上线