项目2---十次方项目开发---后台---01

开发模型:

以微服务划分。

接口是解耦和的,现在是每个服务是独立的了,就没必要写接口了。

访问地址:http://localhost:9001/label

---------------------------------------------01----------------------02--------------------------------------------

UML建模:

powerdesigner:架构师设计数据库的工具。用来谈业务的。

UML建模语言。

-------------------------------------------------------03-----------------------------------------------------------

项目说明:

模块的划分:

common:是公用的。

我们看下这个公共模块的代码:

第一个实体类:PageResult:

第二个实体类:Result:

第三个实体类:StatusCode:

本机的swagger看接口:

-----------------------------------------------------------------------------------04-----------------------------------------------------------------------------------

Restful:

面试问题:幂等和安全问题

安全:脏读什么的

幂等:在操作成功的前提下会不会对数据库造成额外的影响,举个例子比如订单你点一次返回的时候可能信号不好,又点击了一次。

GET:安全幂等

POST:不安全不幂等

DELETE:不安全幂等

PUT:不安全幂等

-----------------------------------------------------------------------------------05-----------------------------------------------------------------------------------

mysql微服务。

配置文件:这个是虚拟机的网卡的配置文件。

看下这个配置文件是如何配置的,用的时候再看就可以。

制作mysql容器。

注意上面的语句有密码:123456

-e:后面为初始化变量

3306:3306:宿主机的端口:容器的,mysql默认端口

docker的自启动:

https://blog.csdn.net/xtjatswc/article/details/86586769

https://segmentfault.com/a/1190000019783852?utm_source=tag-newest

-----------------------------------------------------06-------------------------------------------------------------

执行建表语句

----------------------------------------------------------------------------07------------------------------------------------------------------------------------------

如何创建一个父子工程:

第一步:父亲工程没有pom就不能在子工程用父亲工程的资源了。

第二步:

父工程什么都不要。

父工程不写代码,删掉src的东西。

导入pom。

--------------------------------------------------------------------------08--------------------------------------------------------------------------------------------

构建公共的子模块:

第一步:new一个module,然后直接不用模板。

第二步:创建返回值的实体类。

第三步:写分页的实体类

第四步:状态码

-----------------------------------------------------09-------------------------------------------------------------

雪花算法:64bit。

1:不用的

41:时间戳可以使用到2082年

10:工作机器id可以支持1024台机器

12:序列号可以1毫秒产生4096个自增序列id

分布式id生成器。

二进制的64位,2的64次方。

时间戳是毫秒值的相减,2的41次方。

前五位数 为宿主机器  后五位为微服务的id。

12:随机数真正的随机数。

1秒产生26万个id。超了放在消息队列中。

两个微服务操作一张表:都用雪花算法不用主键自增。

美团的全局ID:https://www.cnblogs.com/imstudy/p/11573025.html

-----------------------------------------------------10-------------------------------------------------------------

基础微服务的crud:

问答。

用模板:

生成项目:base

我们分析下pom的结构:

这个不能去掉。

1.clean2.编译3.发布4.安装

最后的pom:

结论:不建议用模板。

我们写pom文件:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <artifactId>tensquare_common</artifactId>
            <groupId>com.tensquare</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <artifactId>mysql</artifactId>
            <groupId>mysql-connector-java</groupId>
        </dependency>
    </dependencies>

-------------------------------------------------------11------------------------------------------------------------

base的准备工作:

spring:
  application:
     name: temsquare-base
这个语句的作用:是eureak的注册的名字,细节,必须中间是横杠。

注意一个知识点:

driverClassName是一样的,都可以识别。

完整的:

server:
  port: 9001

spring:
  application:
     name: temsquare-base
  datasource:
     driver-class-name: com.mysql.jdbc.Driver
     url: jdbc:mysql://192.168.244.136:3306/tensquare_base?characterEncoding=utf‐8
     username: root
     password: 123456
  jpa:
     database: mysql
     show-sql: true

接下来写启动类:

注意跨域不在这里面写。在Controller里面写。

写好入口文件。

-------------

接下来我们用id生成器。

id生成器的原则就是谁用谁放在容器里面。

  //将id生成器放在容器里面
    @Bean
    public IdWorker idWorker(){
        return new IdWorker(1,1);
    }

讲下源码:

springboot在启动的时候会检索这个文件:

这个就是spring的入口,写web.xml的

点进去:

----------------------------------------------------------12---------------------------------------------------------

写一个controller:

跨域注解:cnblogs.com/mmzs/p/9167743.html

总结:1和3要一样的,要是不一样要保持1和2一样。

基本得crud严格按照接口文档书写:

写实体类。

注意一点分布式得开发要写这个一定要写,加这句话才能在不同平台之间使用io流进行传输。:

写带分页得Dao:

写Service。

在controller写service。

---------------------------------------------------------------13-----------------------------------------------------

postman测试:

swagger地址:http://localhost/#/default/post_label

---------------------------------------------------------------14-----------------------------------------------------

异常处理:

只对Exception处理,可以加别的。

@RestControllerAdvice
public class BaseExceptionHandler {
    @ExceptionHandler(value = Exception.class)
    public Result error( Exception e) {
        e.printStackTrace();
        return new Result(false, StatusCode.ERROR, e.getMessage());
    }
}

----------------------------------------------------------26--------------------------------------------------------------

规范的层次结构示例代码:

1.Controller:

跨域请求写在这里。

2.Service

3.Dao

4.实体类

发布了308 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_28764557/article/details/104069148
今日推荐