springboot整合nutzDao使用多數據源配置

第一步、在配置文件中配置數據源

 

第二步、添加配置文件 註解進來

package com.gdup.gdup_analysis.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.gdup.gdup_analysis.utils.JasyptUtils;
import lombok.extern.java.Log;
import lombok.extern.log4j.Log4j2;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig;
import org.nutz.dao.Dao;
import org.nutz.dao.impl.NutDao;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.bind.Binder;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;

/**
 * @description:
 * @author: inhoo
 * @createTime:2018-04-23
 */
@Configuration
@Log4j2
public class DataSourceConfig implements EnvironmentAware {

    @Value("${spring.datasource.analysis.salt}")
    private String salt;
    @Value("${spring.datasource.gxsjk27.salt}")
    private String gxsjk27Salt;

    private Environment environment;

    private DataSource defaultDataSource;

    @Override
    public void setEnvironment(Environment environment) {
        this.environment = environment;
    }

    //配置主數據源
    @Primary
    @Bean
    public DataSource initDataSource(){
        Binder binder = Binder.get(environment);
        defaultDataSource = binder.bind("spring.datasource.analysis", DruidDataSource.class).get();
        String password = ((DruidDataSource) defaultDataSource).getPassword();
        ((DruidDataSource) defaultDataSource).setPassword(JasyptUtils.jasyptString(password, salt, 2));
        return defaultDataSource;
    }

    //配置從數據源
    @Bean(name = "gxsjk27")
    public DataSource initSDataSource(){
        Binder binder = Binder.get(environment);
        defaultDataSource = binder.bind("spring.datasource.gxsjk27", DruidDataSource.class).get();
        String password = ((DruidDataSource) defaultDataSource).getPassword();
        ((DruidDataSource) defaultDataSource).setPassword(JasyptUtils.jasyptString(password, gxsjk27Salt, 2));
        return defaultDataSource;
    }

    //主數據源綁定Nutz
    @Primary
    @Bean
    public Dao initNutzDao(DataSource dataSource){
        return new NutDao(dataSource);
    }

    //從數據源綁定Nutz
    @Bean(name = "gxsjk27Dao")
    public Dao initSNutzDao(@Qualifier("gxsjk27") DataSource dataSource){
        return new NutDao(dataSource);
    }

}第三步、nutz使用

@Autowired

Dao dao;

@Autowired

@Qualifier("gxsjk27Dao")

Dao gxsjk27Dao;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章