springboot2 + grpc + k8s + istio (持续更新中)

项目情况说明:

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

至此,数据库部分结束。

猜你喜欢

转载自www.cnblogs.com/SamNicole1809/p/12200875.html
今日推荐