Skip to content

Latest commit

 

History

History
240 lines (198 loc) · 8.59 KB

spring-config.md

File metadata and controls

240 lines (198 loc) · 8.59 KB

springBoot 项目引入示例

SpringBoot 配置指南

基于Java的相关用例

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# \u6570\u636E\u6E90\u540D\u79F0
spring.datasource.name=defaultDataSource
# \u6570\u636E\u5E93\u8FDE\u63A5\u5730\u5740
spring.datasource.url=jdbc:mysql://192.168.1.106:13306/tra_log?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&useCompression=true
# \u6570\u636E\u5E93\u7528\u6237\u540D&\u5BC6\u7801\uFF1A
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

package com.edbplus.db.spring.bootConfig;

import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import com.edbplus.db.EDb;
import com.edbplus.db.EDbPro;
import com.edbplus.db.EDbProFactory;
import com.edbplus.db.SpringConfig;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.template.source.ClassPathSourceFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.util.*;

/**
 * @ClassName DataSourcesConfig
 * @Description: 加载 EDbPro 数据库初始化实体示例  -- 初始化方式配置 1
 * @Author 杨志佳
 * @Date 2020/10/16
 * @Version V1.0
 **/
// 自动装载
@EnableAutoConfiguration
@Configuration
@Slf4j
public class DataSourcesConfig {

    /**
     * 通过加装配置,自动装载 dataSource
     * 默认名称以实体对象驼峰名称命名 DataSource ==> dataSource
     * @return
     */
    @Bean
    // 这个是参考阿里云构造器初始化项目上的配置案例
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource getDataSources() {
        DataSource dataSource = new DruidDataSource();
        List<Filter> filterList = new ArrayList<>();
        return dataSource;
    }



// ================  web容器下解放注释后可自定义配置 druid 的扩展功能 -- END =====================

    /**
     * 生成数据源1 -- 主数据源
     * @return
     */
    @Bean(name = "eDbPro")
    public EDbPro getEDbPro(){
         // 适配spring数据库连接池 -- 适配事务
        SpringConfig activerecordConfig = new SpringConfig(
                // 默认名称 ,使用 Db.use() 时,可获取到
                DbKit.MAIN_CONFIG_NAME
                // 这里可以替换成 spring体系的datasource
                ,getDataSources()
                // 事务级别,可以取spring当前的事务级别引入,如果是默认,用该方式即可
                , DbKit.DEFAULT_TRANSACTION_LEVEL
        );
        // 初始化数据源
        ActiveRecordPlugin arp = new ActiveRecordPlugin(activerecordConfig);
        // 定义db实现工厂 继承了父类实现方法( tx()事务兼容 + 自定义jpa相关实现  )
        EDbProFactory eDbProFactory = new EDbProFactory();
        // 设置 edbpro 工厂
        arp.setDbProFactory(eDbProFactory);
        arp.getEngine().setSourceFactory(new ClassPathSourceFactory());
        arp.setDevMode(false);
        arp.setShowSql(true);
        arp.getEngine().addSharedMethod(new com.jfinal.kit.StrKit());
        arp.setShowSql(true);
        // 启动Record容器
        arp.start();
        // 重点:需要初始化一次配置信息,便于 EDb 继承 Db 的config信息
        EDb.init();
        log.debug("===EDb启动成功===");
        return EDb.use();
    }


}

 :: Dubbo Spring Boot (v2.7.7) : https://github.com/apache/dubbo-spring-boot-project
 :: Dubbo (v2.7.7) : https://github.com/apache/dubbo
 :: Discuss group : dev@dubbo.apache.org
 ...
   .   ____          _            __ _ _
  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
 ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
   '  |____| .__|_| |_|_| |_\__, | / / / /
  =========|_|==============|___/=/_/_/_/
  :: Spring Boot ::        (v2.3.0.RELEASE)
2020-10-27 22:17:48.231 [,] [main] DEBUG c.w.c.b.c.EDbConfig - [getEDbPro,59] - ===EDb启动成功===
....
2020-10-27 22:17:52.542 [,] [main] INFO  c.w.c.b.BaseApplication - [logStarted,61] - Started BaseApplication in 4.617 seconds (JVM running for 5.779)
package com.edbplus.db.spring.bootConfig;

import com.edbplus.db.EDb;
import com.edbplus.db.EDbPro;
import com.edbplus.db.EDbProFactory;
import com.edbplus.db.SpringConfig;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.template.source.ClassPathSourceFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

/**
 * @ClassName EDbConfig
 * @Description: edb配置文件 -- 初始化配置方式 - 2
 * @Author 杨志佳
 * @Date 2020/10/23
 * @Version V1.0
 **/
@Slf4j
// 打开注释即可
//@EnableAutoConfiguration
//@Configuration
public class EDbConfig {

    // // 等待db1Source启动后注入
    // // 如果注入的时候报说找不到数据源,则可能是启动顺序的问题导致,可以尝试这么引入   @Qualifier("dataSource")
    @Autowired
    DataSource dataSource;

    /**
     * 生成数据源1 -- 主数据源
     * @return
     */
    @Bean(name = "eDbPro")
    public EDbPro getEDbPro(){
        // 调用本类的bean方法,会自动经过bean的拦截实现,获取到实例化后的bean实体
        // 适配spring数据库连接池 -- 适配事务
        SpringConfig activerecordConfig = new SpringConfig(
                // 默认名称 ,使用 Db.use() 时,可获取到
                DbKit.MAIN_CONFIG_NAME
                // 这里可以替换成 spring体系的datasource
                ,dataSource
                // 事务级别,可以取spring当前的事务级别引入,如果是默认,用该方式即可
                , DbKit.DEFAULT_TRANSACTION_LEVEL
        );
        // 初始化数据源
        ActiveRecordPlugin arp = new ActiveRecordPlugin(activerecordConfig);
        // 定义db实现工厂 继承了父类实现方法( tx()事务兼容 + 自定义jpa相关实现  )
        EDbProFactory eDbProFactory = new EDbProFactory();
        // 设置 edbpro 工厂
        arp.setDbProFactory(eDbProFactory);
        
        arp.getEngine().setSourceFactory(new ClassPathSourceFactory());
        arp.setDevMode(true);
        arp.setShowSql(true);
        arp.getEngine().addSharedMethod(new com.jfinal.kit.StrKit());
        // 启动Record容器
        arp.start();
        // 重点:需要初始化一次配置信息,便于 EDb 继承 Db 的config信息
        EDb.init();
        log.debug("===EDb启动成功===");
        return EDb.use();
    }

}
 :: Dubbo Spring Boot (v2.7.7) : https://github.com/apache/dubbo-spring-boot-project
 :: Dubbo (v2.7.7) : https://github.com/apache/dubbo
 :: Discuss group : dev@dubbo.apache.org
 ...
   .   ____          _            __ _ _
  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
 ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
   '  |____| .__|_| |_|_| |_\__, | / / / /
  =========|_|==============|___/=/_/_/_/
  :: Spring Boot ::        (v2.3.0.RELEASE)
=========  EDb启动成功  ============
2020-10-27 22:57:48.538 [,] [main] DEBUG c.w.c.b.c.EDbConfig - [getEDbPro,59] - ===EDb启动成功===
....
2020-10-27 22:57:50.542 [,] [main] INFO  c.w.c.b.BaseApplication - [logStarted,61] - Started BaseApplication in 4.822 seconds (JVM running for 5.949)