在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); } }
这样操作下来,既可以在项目初期初始化已有的数据源,又可以在服务运行中动态添加,已经完美解决了我们的问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗