直播app源码,数据库多数据源自动选择实现

直播app源码,数据库多数据源自动选择实现

1、写对应枚举的数据源

 

1
public enum DataSourceEnum {<br>    DB1("空铁", "datasource1"),<br>    DB2("同程", "datasource2"),<br>    DB3("账号", "datasource3");<br>    private String name;<br>    private String value;<br>    DataSourceEnum(String name, String value) {<br>        this.name = name;<br>        this.value = value;<br>    }<br>    public String getName(){<br>        return this.name;<br>    }<br>    public String getValue() {<br>        return this.value;<br>    }<br>}

2、实现注解功能

可以使用注解的方式,注解sql使用哪个数据源,在执行sql的时候,就会自动选择对应的数据源

 

1
<br>import java.lang.annotation.*;<br> <br>@Target({ElementType.METHOD,ElementType.TYPE})    //固定写法<br>@Retention(RetentionPolicy.RUNTIME)    //固定写法<br>@Documented    //固定写法<br>public @interface DataSource       //可自定义注解名字<br>{<br>    DataSourceEnum value() default DataSourceEnum.DB1;   //默认的数据源,此处的数据源是自己写的配置<br>}

 

3、切面,实现注解形式自动切换数据源

 

1
import lombok.extern.slf4j.Slf4j;<br>import org.aspectj.lang.annotation.After;<br>import org.aspectj.lang.annotation.Aspect;<br>import org.aspectj.lang.annotation.Before;<br>import org.aspectj.lang.annotation.Pointcut;<br>import org.springframework.core.annotation.Order;<br>import org.springframework.stereotype.Component;<br> <br>@Aspect<br>@Component<br>@Slf4j<br>@Order(-1)<br>public class DataSourceAspect {<br>    //↓↓↓此处的DataSource路径是注解的路径,通过注解实现切面功能<br>    @Pointcut("@within(com.ccservice.searchordernum.config.DataSource)||@annotation(com.ccservice.searchordernum.config.DataSource)")<br>    public void pointCut(){}<br>    //↓↓↓annotation中的datasource是下面方法中的参数。参数中的datasource是注解类<br>    @Before("pointCut() && @annotation(dataSource)")<br>    public void doBefor(DataSource dataSource){<br>        log.info("选择数据源:{}", dataSource.value().getName());  //此处加一个日志,打印出来切换的数据源<br>        //此处设置切换数据源。动态切换。后续我们设置数据源的时候以枚举的value作为key,所以此处设置value就达到了切换数据源的效果<br>        DataSourceContextHolder.setDatasource(dataSource.value().getValue());  <br>    }<br>    @After("pointCut()")<br>    public void doAfter() {<br>        DataSourceContextHolder.clear();  //之后进行数据源清空<br>    }<br>}

 

4、配置druid监控页面

 

1
import com.alibaba.druid.support.http.StatViewServlet;<br>import com.alibaba.druid.support.http.WebStatFilter;<br>import org.springframework.boot.web.servlet.FilterRegistrationBean;<br>import org.springframework.boot.web.servlet.ServletRegistrationBean;<br>import org.springframework.context.annotation.Bean;<br>import org.springframework.context.annotation.Configuration;<br> <br>@Configuration<br>public class DataSourceConfiguration {<br>    @Bean<br>    public ServletRegistrationBean startViewServlet(){<br>        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");<br>        // IP白名单  此处最好把黑白名单去掉,暂时不清楚怎么弄的<br>        servletRegistrationBean.addInitParameter("allow","127.0.0.1");<br>        // IP黑名单(共同存在时,deny优先于allow)<br>        servletRegistrationBean.addInitParameter("deny","127.0.0.1");<br>        //控制台管理用户   配置账号密码等<br>        servletRegistrationBean.addInitParameter("loginUsername","admin");<br>        servletRegistrationBean.addInitParameter("loginPassword","123456");<br>        //是否能够重置数据<br>        servletRegistrationBean.addInitParameter("resetEnable","false");<br>        return servletRegistrationBean;<br>    }<br>    @Bean<br>    public FilterRegistrationBean statFilter(){<br>        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());<br>        //添加过滤规则<br>        filterRegistrationBean.addUrlPatterns("/*");<br>        //忽略过滤的格式<br>        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");<br>        return filterRegistrationBean;<br>    }<br>}

 

 以上就是 直播app源码,数据库多数据源自动选择实现,更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2022-01-10 短视频平台源码,长按视频、对话框弹出操作可选按钮
2022-01-10 直播app开发,封装式标题栏
2022-01-10 直播源码网站,对话框侧滑出现删除、已读等选项
点击右上角即可分享
微信分享提示