项目情况说明:
ubuntu - 16.04
springboot - 2.2.2.RELEASE
mysql - 5.7
mongodb - 4.0.14
redis - 3.0.6
grpc - grpc-spring-boot-starter - 2.6.1.RELEASE
项目目录:
mypro -
device - 调用数据库,grpc客户端
lib - 公共库
person - 调用数据库,grpc服务端
项目启动:
步骤一:项目建立
之所以从这里开始,因为我之前纠结过多模块项目的建立...
IDE我使用的是IDEA
1.1、建立主目录mypro
新建文件夹mypro,在IDEA中依次选择:file -- New -- Project,弹出框选择Spring Initializr,点击Next。
注意红框区域,选择Maven POM,其它可以自己填
又弹出一个框来,什么也不选,直接Next
选择地址(刚才新建的mypro文件夹)
至此,新建主目录结束
1.2、建立子目录
右键单击主目录mypro,选择New,选择Module
选择Spring Initializr,直接Next
注意这里红框选择了Maven Project,其他可以自己填,填完Next
便于测试,这里选择了Spring Web,点击Next,弹出框直接Next就创建成功了
至此,第一个子模块建立成功,按照上面的步骤依次建立其它子模块,我这里建立了lib和person。
1.3、调整pom配置
主模块:去掉依赖,引入子模块,注意<packaging>pom</packaging>打包时会用到
简单处理,把所有的依赖都由lib公共库引入,device和person模块引入lib公共库
首先修改lib模块:<parent>使用了主模块的内容,直接复制过来即可,注意<packaging>jar</packaging>
修改device模块:<parent>使用了主模块的内容,直接复制过来即可,注意<packaging>war</packaging>
引入lib
peron模块同上。
至此,项目建立完成。
步骤二:项目相关依赖,mongo,redis,mysql等简单说下:
1.1、mysql,使用的是mybatis-plus和代码生成器
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.1</version> </dependency>
代码生成器:(我放在test中,加注释的改成自己的就可以)
import org.springframework.boot.test.context.SpringBootTest; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.config.DataSourceConfig; import com.baomidou.mybatisplus.generator.config.GlobalConfig; import com.baomidou.mybatisplus.generator.config.PackageConfig; import com.baomidou.mybatisplus.generator.config.StrategyConfig; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import org.junit.jupiter.api.Test; @SpringBootTest public class CodeGenerator { @Test public void generateCode() { String packageName = "com.sam.person"; // 当前的包 boolean serviceNameStartWithI = true; generateByTables(serviceNameStartWithI, packageName); } private void generateByTables(boolean serviceNameStartWithI, String packageName) { GlobalConfig config = new GlobalConfig();
// 改成自己的 String dbUrl = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=UTC"; DataSourceConfig dataSourceConfig = new DataSourceConfig();
// 用户名和密码 dataSourceConfig.setDbType(DbType.MYSQL).setUrl(dbUrl).setUsername("root").setPassword("123456").setDriverName("com.mysql.cj.jdbc.Driver"); StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig.setCapitalMode(true).setEntityLombokModel(false) .setNaming(NamingStrategy.underline_to_camel)
.setInclude("user"); // 对应数据库表名,表要先创建 config.setActiveRecord(false).setAuthor("sam") // 作者 .setOutputDir("/home/sam/mypro/person/src/main/java") // 路径,到/java就可以 .setFileOverride(true) .setEnableCache(false); if (!serviceNameStartWithI) { config.setServiceName("%sService"); } new AutoGenerator() .setGlobalConfig(config) .setDataSource(dataSourceConfig) .setStrategy(strategyConfig) .setPackageInfo(new PackageConfig() .setParent(packageName) .setController("controller") .setEntity("entity.Do")) .execute(); } }
不熟悉test的,可以放在如图这里,注意person有一个,device也要有一个,包和路径内容要调整下。
生成的结构与下图类似:
没有config,是后加的,application.yml如下,host和port改成自己的,host要使用ip地址,部署时有用:
开放远程连接:(重要)
https://www.cnblogs.com/zhangkaiqiang/p/6646488.html
1.2、mongodb,可参考我另一篇随笔
https://www.cnblogs.com/SamNicole1809/p/12097182.html
开放远程连接:(重要)(参考,主要是需要设置bind-ip: 0.0.0.0,并重启服务)
https://www.cnblogs.com/jinxiao-pu/p/7121307.html
1.3、redis,可参考我另一篇随笔
https://www.cnblogs.com/SamNicole1809/p/12097440.html
开放远程连接:(重要)
https://blog.csdn.net/mr_oldcold/article/details/81026928
1.4、yml配置,黄色标注的根据自己情况填,没有可以不填,host填主机的Ip,不是localhost或127.0.0.1,部署时要用,这也是为什么要把所有数据库的远程连接都打开的原因。
spring: datasource: username: root password: 123456 url: jdbc:mysql://host:3306/test?useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=UTC redis: host: host password: 123456 jedis: pool: max-active: 8 max-idle: 8 max-wait: -1ms min-idle: 0 data: mongodb: uri: mongodb://sam:123456@host:27017/test
至此,数据库部分结束。