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);
            }
    
        }

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

  • 相关阅读:
    320 Generalized Abbreviation
    319. Bulb Switcher
    三条用人原则
    Go 编码问题的解决方案
    C# MVC js 跨域
    apidoc接口文档的快速生成
    go语言学习
    C#系统之垃圾回收
    WCF项目启动时错误处理
    XML之XPath
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/15209548.html
Copyright © 2011-2022 走看看