1.注入配置文件中的数据库配置

 /**     * datasourceUrl 连贯数据库url     */    @Value("${spring.datasource.url}")    private String datasourceUrl;    /**     * driverClassName 数据库驱动     */    @Value("${spring.datasource.driver-class-name}")    private String driverClassName;    /**     * datasourceUserName 连贯数据库的用户名     */    @Value("${spring.datasource.username}")    private String datasourceUserName;    /**     * databasePassword 连贯数据库明码     */    @Value("${spring.datasource.password}")    private String databasePassword;    /**     * 注入数据库公钥     */    @Value("${spring.datasource.public-key}")    private String datasourcePublicKey;

2.调用druid公钥+明码钥进行解密,并执行创立数据库语句

/**     * @return dataSource     * @description 配置数据库主动创立     * 如果连贯地址没有对应的数据库则创立,前提是有root账号,或者是非root账号具备建库的权限     */    @Bean    public DataSource dataSourceConfig() {        DruidDataSource dataSource = new DruidDataSource();        String decrypt = null;        //druid解密        try {            decrypt = ConfigTools.decrypt(datasourcePublicKey, databasePassword);        } catch (Exception e) {            log.error("公钥解密异样:{}", e.getMessage());        }        dataSource.setUrl(datasourceUrl);        dataSource.setUsername(datasourceUserName);        //将解密后的明码增加到datasource源        dataSource.setPassword(decrypt);        dataSource.setDriverClassName(driverClassName);        Connection connection = null;        PreparedStatement state = null;        try {            Class.forName(driverClassName);            // 截取数据库问问好前的连贯参数            String sqlUrl = datasourceUrl.substring(0, datasourceUrl.indexOf("?"));            // 获取连贯数据库的url            String databasesUrl = sqlUrl.substring(0, sqlUrl.lastIndexOf("/"));            // 截取数据库名            String databaseName = sqlUrl.substring(sqlUrl.lastIndexOf("/") + 1);            // 创立连贯            connection = DriverManager.getConnection(databasesUrl, datasourceUserName, decrypt);            // 创立传输通道,并设置占位符            String sql = "create database if not exists ? default character set utf8 COLLATE utf8_general_ci";            state = connection.prepareStatement(sql);            // 将数据库名注入到占位符            state.setString(1, databaseName);            // 获取到注入的sql语句            String resultSql = ((ClientPreparedStatement) state).asSql();            String executeSql = resultSql.replaceAll("'", "`");            int execute = state.executeUpdate(executeSql);            log.info("sql语句执行状态:{}", execute);        } catch (Throwable e) {            log.error("数据库连贯异样:{}", e.getMessage());        } finally {            try {                if (null != state) {                    state.close();                }                if (null != connection) {                    connection.close();                }            } catch (SQLException throwable) {                log.error("sql语句异样:{}", throwable.getMessage());            }        }        return dataSource;    }

3. 表明这是一个配置类

@Configurationpublic class DruidConf {

启动我的项目测试。。。