Java微服务开发基础

Java微服务开发基础

一、准备工作

学习资料

书籍

  《Java 微服务》 辛大奇 著 中国水利水电出版社

开发工具

IntelliJ IDEA

  Java开发工具介绍

 

基础知识

Java教程   https://www.liaoxuefeng.com/wiki/1252599548343744

SQL 教程 https://www.runoob.com/sql/sql-tutorial.html

Spring基础知识汇总 Java开发必看,推荐

Spring框架教程(非常详细)     http://c.biancheng.net/spring/

MyBatis-Plus https://baomidou.com/pages/24112f/      DDL(数据定义语言)   数据库和表的创建和修改,结合MyBatis-plus基本可以完成很多的数据库操作

程序员手册大全   http://manual.51yip.com/

C++标准教程、PostgreSQL必备参考手册、深入理解Nginx、高性能MySQL等

 

交流社区

阿里云开发者社区

 

其他

gRPC 官方文档中文版

 

Git分支命名规范 https://blog.csdn.net/qq_25123887/article/details/125680610

技术栈

 

Knife4j

  knife4j-swagger接入  @ApiOperationSupport需要过滤掉的参数

        Knife4j 2.0.5 版本发布,性能优化

       调用接口后,返回1万多行数据的json,造成页面卡死     Knife4j 3+版本,该问题仍然存在  

 

MapStruct

mapstruct原理解析 https://blog.csdn.net/datastructure18/article/details/120208842

Mapstruct 使用教程  https://blog.csdn.net/qq_44732146/article/details/119968376

消息中间件

四种常用消息中间件比较分析(RabbitMQ、ActiveMQ、Kafka、RocketMQ)  https://blog.csdn.net/qq_42459181/article/details/88061028

常用消息中间件MQ(ActiveMQ、RabbitMQ、RocketMQ、Kafka)优缺点以及区别

https://blog.csdn.net/wsx1014/article/details/118308202

Spring Cache

Spring之Cache缓存详解 https://blog.csdn.net/qq1309664161/article/details/120381708

Spring Cache的简介和简单使用  https://blog.csdn.net/weixin_70606639/article/details/125868733

Mybatis-plus

  Springboot + Mybatis-plus事务管理  有Gitee源码

  mybatis-plus事务 简单示例

  mybatis简单介绍

       MyBatis Plus配合p6spy控制台打印美化格式的sql语句

  Mybatis-plus 联表查询

    Mapper.xml 介绍   Mapper.xml 常用配置、单表查询(paramterType、resultType)、多表关联查询(一对多、多对多)

    MyBatis中CDATA的作用  在XML文档的解析过程中,首先查找元素的起始符,即字符"<"和字符"&"。字符"<"表示为新元素的开始,字符"&"表示为字符实体的开始。CDATA的作用是保护这些特殊字符(例如,小于号<等)不被解析。

    Mapper.xml 路径配置   解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)异常   

    动态数据源和多模块Mapper.xml 配置  SpringBoot Maven多模块项目 mapper.xml 文件扫描不到问题

      在配置文件里面也指定了mybatis-plus的xml位置:      

mybatis-plus:
  # mapper xml映射路径
  mapper-locations: classpath*:mapper/**/*Mapper.xml

    在SqlSessionFactory的Bean中配置Mapper路径

    /**
     * 使用MyBatis Plus的sqlSessionFactory代替,
     * 此处注意mybatis与mybatisPlus的配置不同,不然扫描不到对数据操作的方法。会报未绑定错误
     * @return sqlSessionFactory
     * @throws Exception
     */
    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(myRoutingDataSource);
        // sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/**/*.xml"));
        org.springframework.core.io.Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath:mapper/**/*.xml");
        sqlSessionFactoryBean.setMapperLocations(resources);
        MybatisConfiguration mybatisConfiguration = new MybatisConfiguration();
        sqlSessionFactoryBean.setConfiguration(mybatisConfiguration);
        return sqlSessionFactoryBean.getObject();
    }

 

注解

@SneakyThrows注解 https://blog.csdn.net/qq_22162093/article/details/115486647

 

feign

feign和openFeign区别和openFeign教程     https://blog.csdn.net/weixin_45433031/article/details/122994267

feign和openfeign的区别  https://blog.csdn.net/justlpf/article/details/125874767  包含demo源码

【feign】OpenFeign设置header的5种方式  添加注解

feign常用俩种降级方式Fallback和FallbackFactory。  https://blog.csdn.net/weixin_42771651/article/details/121626431

不同微服务之间Feign调用方法(Pigx框架下)   有跨租户处理

【springcloud】解决使用feign调用服务 header参数传递的问题 

Feign实现服务间并且调用时传递header以及新增header

调用feign接口时,如何往header中添加参数

MQTT

SpringBoot 整合MQTT发布和订阅消息处理   

https://blog.csdn.net/qq_40083897/article/details/106408822   包含EMQ服务和简单代码

SpringBoot 整合MQTT客户端连接多个服务端(多个emqx)

https://blog.csdn.net/qq_40083897/article/details/117333716  是否可以支持多个模块使用以便注册多个客户端

springboot自动化配置mqtt,整合spring-integration-mqtt,连接多个mqtt,动态订阅主题

https://blog.csdn.net/qq_20280007/article/details/105250986?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-105250986-blog-117333716.pc_relevant_multi_platform_whitelistv6&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-105250986-blog-117333716.pc_relevant_multi_platform_whitelistv6&utm_relevant_index=2

 

Spring Cloud Gateway

  注意:springcloudgateway的内部是通过netty+webflux实现的,webflux实现和springmvc配置依赖冲突。

  跨域配置

spring:
  cloud: 
    gateway:
      discovery:
        locator:
          lower-case-service-id: true #启动 locator.enabled=true 自动路由时,路由的路径默认会使用大写ID,若想要使用小写ID,可将lowerCaseServiceId设置为true
          enabled: true  #默认为false,设置为true开启服务发现和路由的功能,网关自动根据注册中心的服务名为每个服务创建一个router,将以服务名开头的请求路径转发到对应的服务
          filters[0]: PreserveHostHeader
        globalcors:
          cors-configurations:
            '[/**]':
              allowedHeaders: "*" # 允许在请求中携带的头信息
              allowedOrigins: "*" # 允许哪些网站的跨域请求
              allowCredentials: true # 是否允许携带cookie
              allowedMethods: "*" # 允许的跨域ajax的请求方式
        default-filters:
          - DedupeResponseHeader=Access-Control-Allow-Origin Access-Control-Allow-Credentials Vary, RETAIN_UNIQUE # 删除响应头重复数据
View Code

 

 

常见问题

 

已解决:

windows中java -jar 在jar包中引用nacos配置中心的问题  

  https://blog.csdn.net/lxw198902165221/article/details/119911999

 

Nacos+docker部署服务时,本地注册到nacos上的服务无法使用OpenFeign调用docker上的服务  

  discovery中需增加IP配置,参考链接   解决服务器 Docker + Nacos + FeignClient 调用不通 https://blog.csdn.net/sxg0205/article/details/113420024

 

java微服务占用内存过大怎么办   

限制内存

java -jar -Xms128m -Xmx750m -Xmn150m -Xss1024k ***.jar    

 

 

待学习

Nacos+Sentinel+OpenFeign实现熔断、限流、服务间调用 https://zhuanlan.zhihu.com/p/521705933

 

Feign接口调用添加请求头信息

 

springcloud gateway中进行统一处理api接口异常返回  将异常也进行处理,使其数据格式与我们接口中保持一致,方便前端进行统一处理。

SpringCloud-Gateway在网关中统一返回对象

posted @ 2022-09-18 16:47  十二楼C  阅读(104)  评论(0编辑  收藏  举报