直接上代码,就三个类,在不使用外部配置的情况下也能读取默认的配置文件
import com.alibaba.druid.filter.config.ConfigFilter; import com.alibaba.druid.filter.encoding.EncodingConvertFilter; import com.alibaba.druid.filter.logging.CommonsLogFilter; import com.alibaba.druid.filter.logging.Log4j2Filter; import com.alibaba.druid.filter.logging.Log4jFilter; import com.alibaba.druid.filter.logging.Slf4jLogFilter; import com.alibaba.druid.filter.stat.StatFilter; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.wall.WallFilter; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; /** * @author linxh * @description 外部数据源连接转换器 * @date 2021/11/18 */ public class ExtralDruidDataSourceWrapper extends DruidDataSource implements InitializingBean { @Override public void afterPropertiesSet() throws Exception { //这个判断条件没啥用,看自身使用情况,ExtralMysqlConnectionInfo这个类是自己写用来读取外部数据源信息的 if (ExtralMysqlConnectionInfo.loadExtralSwitch()) { super.setUrl(ExtralMysqlConnectionInfo.getMysqlUrl()); super.setUsername(ExtralMysqlConnectionInfo.getMysqlUsername()); super.setPassword(ExtralMysqlConnectionInfo.getMysqlPassword()); super.setDriverClassName(ExtralMysqlConnectionInfo.getMysqlDriverClassName()); } } }
import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; /** * @author linxh * @description 创建外部数据源 * @date 2021/11/18 */ public class ExtralDruidDataSourceBuilder extends DruidDataSourceBuilder { public static ExtralDruidDataSourceBuilder create() { return new ExtralDruidDataSourceBuilder(); } /** * For build multiple DruidDataSource, detail see document. */ public DruidDataSource build() { return new ExtralDruidDataSourceWrapper(); } }
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; /** * 配置多数据源 * * @author */ @Configuration public class DataSourceConfig { @Bean @ConfigurationProperties("spring.datasource.druid") public DataSource dataSource(){ return ExtralDruidDataSourceBuilder.create().build(); } }