zoukankan      html  css  js  c++  java
  • springboot-web项目(从spring mvc-web迁移过来的)多数据源,mybatis,redis,kafka配置

    1. 首先使用idea创建一个springboot-web的壳子

    2. 将原工程的代码搬到新工程上 (后端代码部分)

    3. 将静态资源搬到resource目录下, 其中templates下面放的ftl文件

    before  after:

    4. 配置文件application.properties: 多数据库,mybatis, redis, kafka, freemaker

    spring.application.name=myapp
    server.port=18080
    
    
    spring.velocity.enabled=true
    spring.velocity.prefix=
    spring.velocity.suffix=.vm
    spring.velocity.cache=false
    spring.velocity.check-template-location=true
    spring.velocity.content-type=text/html
    spring.velocity.charset=UTF-8
    spring.velocity.properties.input.encoding=UTF-8
    spring.velocity.properties.output.encoding=UTF-8
    spring.velocity.requestContextAttribute=rc
    spring.velocity.exposeRequestAttributes=true
    spring.velocity.exposeSessionAttributes=true
    spring.velocity.exposeSpringMacroHelpers=true
    
    spring.mvc.async.request-timeout=20000
    #DataBase start
    spring.datasource.data1.jdbc-url=jdbc:mysql://localhost:3306/atable?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
    spring.datasource.data1.username=root
    spring.datasource.data1.password=root
    spring.datasource.data1.driver-class-name=com.mysql.cj.jdbc.Driver
    
    
    spring.datasource.data2.jdbc-url=jdbc:mysql://localhost2/btable?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
    spring.datasource.data2.username=root
    spring.datasource.data2.password=root
    spring.datasource.data2.driver-class-name=com.mysql.cj.jdbc.Driver
    
    spring.datasource.data3.jdbc-url=jdbc:mysql://localhost3/ctable?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
    spring.datasource.data3.username=root
    spring.datasource.data3.password=root
    spring.datasource.data3.driver-class-name=com.mysql.cj.jdbc.Driver
    
    #myBatis
    #配置.xml文件路径
    mybatis.config-location=classpath:mybatis-config.xml
    mybatis.mapper-locations=classpath:mybatis/*.xml
    ##配置实体类路径
    mybatis.type-aliases-package=com.youdao.myapp.model
    
    # redis集群配置
    spring.offline.redis.cluster.nodes=ip:端口;ip2:端口
    # Redis服务器连接密码(默认为空)
    spring.offline.redis.password=
    # 连接池最大连接数(使用负值表示没有限制)
    spring.offline.redis.pool.max-active=20
    # 连接池最大阻塞等待时间(使用负值表示没有限制)
    spring.offline.redis.pool.max-wait=-1
    # 连接池中的最大空闲连接
    spring.offline.redis.pool.max-idle=20
    # 连接池中的最小空闲连接
    spring.offline.redis.pool.min-idle=0
    # 连接超时时间(毫秒)
    spring.offline.redis.pool.timeout=60000
    
    
    #ftl文件配置
    spring.freemarker.tempalte-loader-path=classpath:/templates
    #        关闭缓存,及时刷新,上线生产环境需要修改为true
    spring.freemarker.cache=false
    spring.freemarker.charset=UTF-8
    spring.freemarker.check-template-location=true
    spring.freemarker.content-type=text/html
    spring.freemarker.expose-request-attributes=true
    spring.freemarker.expose-session-attributes=true
    spring.freemarker.request-context-attribute=request
    spring.freemarker.suffix=.ftl
    
    
    #原始数据kafka读取
    
    kafka.consumer.servers=localhost:9092
    
    kafka.consumer.enable.auto.commit=true
    kafka.consumer.session.timeout=20000
    kafka.consumer.auto.commit.interval=100
    kafka.consumer.auto.offset.reset=latest
    kafka.consumer.topic=test
    
    kafka.consumer.group.id=myapp
    kafka.consumer.concurrency=10
    View Code

    5. mybatis-config.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    
    <configuration>
        <!--开启驼峰命名规则自动转换-->
        <settings>
        <setting name="mapUnderscoreToCamelCase" value="true" />
        </settings>
    </configuration>

    6. generatorConfig.xml 文件是根据数据库自动生成mapper, model,xml等文件,可不写

    7. 多数据源dataSource

    数据源1, 主数据源要加primary

    package com.myapp.dataSource;
    
    
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.mybatis.spring.SqlSessionTemplate;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.jdbc.DataSourceBuilder;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    
    import javax.sql.DataSource;
    
    //import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
    
    /**
     * @author chenye
     */
    @Configuration//注解到spring容器中
    @MapperScan(basePackages = "com.myapp.mapper.Mapper1",sqlSessionTemplateRef  = "data1SqlSessionTemplate")
    public class KeUtilsData {
    
        /**
         * 返回data1数据库的数据源
         * @return
         */
        @Bean(name="data1Source")
        @Primary//主数据源
        @ConfigurationProperties(prefix = "spring.datasource.data1")
        public DataSource dataSource(){
            return DataSourceBuilder.create().build();
        }
    
        /**
         * 返回data1数据库的会话工厂
         * @param ds
         * @return
         * @throws Exception
         */
        @Bean(name = "data1SqlSessionFactory")
        @Primary
        public SqlSessionFactory sqlSessionFactory(@Qualifier("data1Source") DataSource ds) throws Exception{
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(ds);
            bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/Mapper1/*.xml"));
    
            return bean.getObject();
        }
        /**
         * 返回data1数据库的事务
         * @param ds
         * @return
         */
        @Bean(name = "data1TransactionManager")
        @Primary
        public DataSourceTransactionManager transactionManager(@Qualifier("data1Source") DataSource ds){
            return new DataSourceTransactionManager(ds);
        }
    
        /**
         * 返回data1数据库的会话模板
         * @param sessionFactory
         * @return
         * @throws Exception
         */
        @Bean(name = "data1SqlSessionTemplate")
        @Primary
        public SqlSessionTemplate sqlSessionTemplate(@Qualifier("data1SqlSessionFactory") SqlSessionFactory sessionFactory) throws  Exception{
            return  new SqlSessionTemplate(sessionFactory);
        }
    
    
    }
    View Code

    数据源2

    package com.myapp.dataSource;
    
    
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.mybatis.spring.SqlSessionTemplate;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.jdbc.DataSourceBuilder;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    
    import javax.sql.DataSource;
    
    
    /**
     * @author 
     */
    @Configuration//注解到spring容器中
    @MapperScan(basePackages = "com.myapp.mapper.Mapper2",sqlSessionTemplateRef  = "data2SqlSessionTemplate")
    public class LsaDevData {
    
        /**
         * 返回data1数据库的数据源
         * @return
         */
        @Bean(name="data2Source")
        @ConfigurationProperties(prefix = "spring.datasource.data2")
        public DataSource dataSource(){
            return DataSourceBuilder.create().build();
        }
    
        /**
         * 返回data1数据库的会话工厂
         * @param ds
         * @return
         * @throws Exception
         */
        @Bean(name = "data2SqlSessionFactory")
        public SqlSessionFactory sqlSessionFactory(@Qualifier("data2Source") DataSource ds) throws Exception{
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(ds);
            bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/Mapper2/*.xml"));
    
            return bean.getObject();
        }
        /**
         * 返回data1数据库的事务
         * @param ds
         * @return
         */
        @Bean(name = "data2TransactionManager")
        public DataSourceTransactionManager transactionManager(@Qualifier("data2Source") DataSource ds){
            return new DataSourceTransactionManager(ds);
        }
    
        /**
         * 返回data1数据库的会话模板
         * @param sessionFactory
         * @return
         * @throws Exception
         */
        @Bean(name = "data2SqlSessionTemplate")
        public SqlSessionTemplate sqlSessionTemplate(@Qualifier("data2SqlSessionFactory") SqlSessionFactory sessionFactory) throws  Exception{
            return  new SqlSessionTemplate(sessionFactory);
        }
    
    
    }
    View Code

    8. pom.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.3.1.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com</groupId>
        <artifactId>myapp</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>ketools</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-freemarker</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web-services</artifactId>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.3</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-core</artifactId>
                <version>1.3.2</version>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.kafka</groupId>
                <artifactId>spring-kafka</artifactId>
            </dependency>
    <!--        <dependency>-->
    <!--            <groupId>org.apache.kafka</groupId>-->
    <!--            <artifactId>kafka_2.9.2</artifactId>-->
    <!--            <version>0.8.2.2</version>-->
    <!--        </dependency>-->
            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-clients</artifactId>
            </dependency>
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>2.6.2</version>
            </dependency>
            <dependency>
                <groupId>commons-httpclient</groupId>
                <artifactId>commons-httpclient</artifactId>
                <version>3.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
            </dependency>
            <!-- 新集群 cassandra依赖 -->
            <dependency>
                <groupId>com.datastax.cassandra</groupId>
                <artifactId>cassandra-driver-mapping</artifactId>
                <version>3.7.0</version>
            </dependency>
            <dependency>
                <groupId>com.datastax.cassandra</groupId>
                <artifactId>cassandra-driver-core</artifactId>
                <version>3.7.0</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.12</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
                <version>6.8.21</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.60</version>
            </dependency>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>4.6.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.1</version>
            </dependency>
            <dependency>
                <groupId>commons-lang</groupId>
                <artifactId>commons-lang</artifactId>
                <version>2.6</version>
            </dependency>
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>3.2.2</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-freemarker</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.22</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    View Code

    9. controller: 加了@responseBody 返回的是字符串hello, 不加则返回前端视图view, 比如websocketpage, 则会返回websocketpage.ftl页面

  • 相关阅读:
    HDU 4861 Couple doubi(数论)
    POJ 3233 Matrix Power Series 二分+矩阵乘法
    js原生offsetParent解析
    ADS-B显示终端6.8
    模板
    习题四——数字智力题
    Android ORMLite ForeignCollection关联外部集合
    Android应用程序无法读写USB设备的解决方法
    [学习笔记]批次需求计划-十一大量
    jqury+css实现可弹出伸缩层
  • 原文地址:https://www.cnblogs.com/leavescy/p/13299872.html
Copyright © 2011-2022 走看看