zoukankan      html  css  js  c++  java
  • 在springboot中使用jdbcTemplate(4)

    一般情况下,我们在项目中使用的数据源DataSource都是写在properties文件中,很少会改变

    但有些项目中,数据源会经常发生改变,如果我们不想改代码、编译打包等一系列操作,就需要考虑能否动态新增数据源信息。

    实际上,这当然是可以的。

    我们只需要初始化一个Map,将动态新增的JdbcTemplate存放在map中即可

    public final static Map<String, JdbcTemplate> dsMap = new ConcurrentHashMap<>();
    public static JdbcTemplate setJdbcTemplate(String name, String url, String username, String password) {
            DruidDataSource druidDataSource = new DruidDataSource();
            druidDataSource.setUrl(url);
            druidDataSource.setUsername(username);
            druidDataSource.setPassword(password);
            JdbcTemplate jdbcTemplate = new JdbcTemplate(druidDataSource);
            dsMap.put(name, jdbcTemplate);
            return jdbcTemplate;
        }

    然而实际项目中,一般是这样的,在项目启动时我们已经能确定一些数据源,那么这些应该怎么办呢?

    其实很简单,只需要在项目启动时对这些已有数据源先进行初始化

    public static void initJdbcTemplate()  {
            ClassPathResource resource = new ClassPathResource("datasource.properties");
            InputStream inputStream = null;
            Properties properties = new Properties();
            try {
                inputStream = resource.getInputStream();
                properties.load(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            String name = properties.getProperty("name");
            String url = properties.getProperty("url");
            String username = properties.getProperty("username");
            String password = properties.getProperty("password");
            JdbcTemplate jdbcTemplate = setJdbcTemplate(name, url, username, password);
            //初始化api其他数据源
            List<JdbcConfig> configs = jdbcTemplate.query("select * from jdbc_config", new BeanPropertyRowMapper<>(JdbcConfig.class));
            for (JdbcConfig config : configs) {
                setJdbcTemplate(config);
            }
    
        }

    这样操作下来,既可以在项目初期初始化已有的数据源,又可以在服务运行中动态添加,已经完美解决了我们的问题。

  • 相关阅读:
    Windows8 自制DatePicker
    Windows8 商店支付功能
    通过(Node Js||.Net)基于HTML5的WebSocket实现实时视频文字传输(上)
    Windows8 检测网络
    Windows8 推送通知
    Windows8&Windows Phone 做一个图片效果
    js 两种时间数字字符串格式
    使用Homebrew安装Git(Mac)
    JavaScript核心参考教程客户端JavaScript
    MVC模式浅谈
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/15209548.html
Copyright © 2011-2022 走看看