将两个数据源与jdbc模板一起使用 [英] Use two datasources with jdbc template

查看:59
本文介绍了将两个数据源与jdbc模板一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我曾经从事过Spring Boot项目,现在正在从事数据库工作.我认为最好为数据库设置两个用户:

So, I've worked on a spring boot project and now I am working on the database. I thought that it would be best to set two users for the database:

一个可以访问用户表以进行登录/注册/信息更新,另一个可以访问其他表.

one that has access to the user table for login/register/information update and another for accessing the other tables.

我的想法是为两个DataSource创建两个单独的bean,每个bean都有一个单独的用户,并且当用户要登录时,控制器将相应地更改JDBCtemplate DataSource.

My idea was to create two separate beans for two DataSources each with a separate user and when a user wants to log in, the controller would change the JDBCtemplate DataSource accordingly.

但是我不确定那是否行得通,因为JDBCtemplate已经被定义为一个Spring Boot项目,而且我也不知道它的范围(我假设如果它不是会话bean,那么更改DataSource将适用于所有用户),而不仅仅是针对一个用户)

But I am not sure if that would work since the JDBCtemplate is already defined as a spring boot project and I don't know it's scope (I assume if it is not a session bean, changing the DataSource would be for all users, not just for one user)

有人对我该如何解决这个问题有想法吗?请告诉我!

Does anyone have an idea about how should I tackle this problem? Please let me know!

推荐答案

您可以创建2个JdbcTemplate bean:

You can create 2 JdbcTemplate beans:

// declare
@Bean("jdbc1")
public JdbcTemplate createJdbcTemplate1(@Autowired @Qualifier("datasource1") DataSource dataSource1){
    return new JdbcTemplate(dataSource1);
}

@Bean("jdbc2")
public JdbcTemplate createJdbcTemplate2(@Autowired @Qualifier("datasource2") DataSource dataSource2){
    return new JdbcTemplate(dataSource2);
}

并在自动装配时指定bean的名称:

and specify name of bean when autowiring:

// use jdbcTemplate1 for login/register/information
@Autowired
@Qualifier("jdbc1")
protected JdbcTemplate jdbcTemplate1;

// use jdbcTemplate2 for other
@Autowired
@Qualifier("jdbc2")
protected JdbcTemplate jdbcTemplate2;

这篇关于将两个数据源与jdbc模板一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆