Use two datasources with jdbc template

Adrian Pascu :

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.

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.

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!

Ken2009 :

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

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;

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=108596&siteId=1