zoukankan      html  css  js  c++  java
  • 动态指定数据持久化方案

    最近要做一个PAAS系统,有这样一个需求:

    (1)需求:根据配置文件动态的指定持久化方案

    (2)说明:这个持久化方案可以是文件系统/mysql/oracle

    思考:

    (1)三种处理方式是一定要有三套解决方案的

    (2)同一套系统的同一套功能是需要有统一的接口的

    (3)需要有一个全局的变量来控制具体使用哪一套解决方案

    解决:

    (1)首先应该抽象一套接口

    (2)写三套实现方式,即每个抽象的接口都有三个具体的实现类

    (3)三个实现类上注明注入条件,根据配置文件的配置信息决定将哪一套实现类注入到spring容器中

    代码结构:

     根据配置文件注入实现类:

    (1)配置文件(application.properties)中添加配置():

    #mysql/file/oracle
    db.type=mysql

    (2)接口的实现类添加注解:

    package com.googosoft.service.impl.mysql;
    
    import java.util.ArrayList;
    import java.util.List;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
    import org.springframework.context.annotation.Configuration;
    import com.googosoft.constant.HostStatus;
    import com.googosoft.model.Host;
    import com.googosoft.service.HostService;
    
    /**
     * @author songyan
     * @date 2020年4月8日 下午9:19:27
     * @desc
     */
    @Configuration
    @ConditionalOnProperty(prefix = "db",name = "type",havingValue = "mysql") 
    public class HostServiceMysqlImpl implements HostService{
    
        @Override
        public List<Host> getList(int page, int limit) {
            List<Host> hostList = new ArrayList<Host>();
            for (int i = 0; i < 15; i++) {
                hostList.add(new Host("mysql——hostname"+i,12,"192.168.11."+(i+1)%10,HostStatus.NORMAL));
            }
            return hostList;
        }
    
        @Override
        public int getListCount(int page, int limit) {
            return 15;
        }
    
    }
  • 相关阅读:
    线程资料整理
    泛型委托使用
    生成树形结构的JSON字符串代码(C#)供前端Angular tree使用.
    Bootstrap学习笔记(6)
    Bootstrap学习笔记(5)
    Bootstrap学习笔记(4)
    渗透利器-kali工具 (第一章-3) Kali Linux 基础命令介绍下
    渗透利器-kali工具 (第一章-2) Kali Linux 基础命令介绍上
    渗透利器-kali工具 (第一章-1) Kali
    渗透利器-kali工具 (第一章) 前言篇
  • 原文地址:https://www.cnblogs.com/excellencesy/p/12666327.html
Copyright © 2011-2022 走看看