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
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); } }
数据源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); } }
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>
9. controller: 加了@responseBody 返回的是字符串hello, 不加则返回前端视图view, 比如websocketpage, 则会返回websocketpage.ftl页面