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

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

  • 相关阅读:
    jQuery 折叠,自动完成,小提示,树,验证插件(bassistance.de)
    多样化的连结提示效果(Tips)
    Ext开源 Extjs2.0 人力资源管理(ASP.NET)
    JavaScript面向对象编程
    访问Ext.data.store的数据
    Ext核心代码分析之Function.createDelegate
    支持firefox的省略符
    Ext 2.0下Jquery的整合使用示例
    多样化的垂直菜单(OUTLOOK菜单)
    使用 jQuery 简化 Ajax 开发
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/15209548.html
Copyright © 2011-2022 走看看