spring cloud多模块项目框架搭建-集成lombok

第五章: spring cloud多模块项目框架搭建-集成lombok

本系列博客旨在搭建一套能用于实际开发使用的spring cloud多模块微服务项目框架,并不是一个spring cloud的demo而已,提供系统的开发规范限制,微服务注册中心,配置中心,负载均衡,熔断,redis缓存,分布式事务,kafka服务消息通信,系统安全(sql注入攻击,xxs攻击等等),多数据源切换,全局异常处理等等。

目录顺风车:

spring cloud多模块项目框架搭建:https://blog.youkuaiyun.com/lingyancangqiong/article/details/109841353

 

 

 

Project Lombok 官网:https://www.projectlombok.org    

Project Lombok 文档:Reducing Boilerplate Code with Project Lombok | Object Computing, Inc.

常住的这家宾馆,前两日被子消毒有问题,导致刺激性过敏,全身红斑巨氧。那一夜通宵未眠,写下了"切肤红酊如蚁过,且待入梦且待明"的朋友圈🤢,各位可以想象是多么难熬的一夜。所以也就耽误了更新,今日基本痊愈了,也就加快更新的步伐。

本章我们来集成lombok,全称Project Lombok.使用它通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码,lombok能够达到的效果就是在源码中不需要写一些通用的方法,但是在编译生成的字节码文件中会帮我们生成这些方法

一.   添加lombok的maven依赖

1.   在deam父模块的pom.xml添加如下依赖:

         <properties>
             <lombok.version>1.18.16</lombok.version>
        </properties>

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>

2. 在dream-order和dream-activity的pom.xml分别添加如下依赖:

        <!--lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>

二.  添加了jar依赖,还要为idea添加插件,要让idea认识你的注解,不然会报错。

 这是官网的介绍,其实不难看懂。他说让idea和lombok兼容,得为idea装上lombok的插件,下面几个就是在idea上的操作步骤。说到插件,这里推荐两个,AiXcode和SonarLint,SonarLint一个是代码规范检查的,另一个是通过ai学习智能代码补全的。

三.   lombok的使用

还记得上一章通过Mybatis-Plus生成的代码报错被我们注释的那三个注解吗?现在可以把它放开了,导包,再删掉get,set方法。你会发现Service层里面使用entity的get,set方法也不报错了,我们一般在实体类使用@Data就行了,把另外两个干掉。

@Data注解:生成getter,setter代码,另外@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集

@EqualsAndHashCode(callSuper = false),会生成equals(Object other) 和 hashCode()方法,注意当启动@EqualsAndHashCode时,默认不调用父类的equals方法,当做equals()类型相等判断时,会遇到麻烦。

@Accessors(chain = true)翻译是存取器。通过该注解可以控制getter和setter方法的形式,有luent,chain,prefix三个可选boolean值参数。luent 若为true,则getter和setter方法的方法名都是属性名,且setter方法返回当前对象。chain 若为true,则setter方法返回当前对象.prefix 若为true,则getter和setter方法会忽视属性名的指定前缀(遵守驼峰命名。

 

本章spring cloud多模块项目框架搭建-集成lombok到这里就全部结束了,lombok还有很多好用的注解,大家可以照着文首的lombok文档去使用,可以减少我们大量的一些无意义代码,比如我用的比较多的@AllArgsConstructor注解,它可以让你要注入多个类时,免于每个都去添加@Autowired或者@Resource注解。下一章我们来说说druid的使用。最后分享一句我今天看到的一句觉得说的很好的话:任何技术的出现都是为了解决某一类问题,如果在此基础上再建立奇技淫巧,不如回归Java本身,应该保持合理使用而不滥用。

本章代码我放在了蓝奏云,可以下载下来对照对照:  (https://wws.lanzous.com/b01htzpxg   密码:i41o )

 

上面所写内容如有不足和纰漏,欢迎留言或私聊指正批评。如果需要转载,也是欢迎,不甚荣幸,但请把《spring cloud多模块项目框架搭建》这一系列博客全部一起转载,这一系列博客毕竟是个整体教程,如果别人只看到一部分,那就是个残次品,谢谢,鞠躬。

### 关于 Spring Cloud Alibaba 项目搭建 #### 微服务架构概述 Spring Cloud Alibaba 是阿里巴巴基于 Spring Cloud 提供的一套微服务解决方案,旨在帮助开发者更方便地构建分布式应用系统。它集成了多个中间件工具,如 Nacos、Sentinel 和 RocketMQ 等[^1]。 --- #### 创建父工程 通过 Maven 构建一个多模块的父工程,定义统一的版本管理策略。以下是 `pom.xml` 文件的关键部分: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.5</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <java.version>1.8</java.version> <spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ``` 上述代码片段展示了如何引入 Spring Cloud Alibaba 的依赖管理[^3]。 --- #### 创建通用子模块 (common) 该模块用于存储公共类和工具方法。在 `pom.xml` 中添加必要的依赖项: ```xml <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> </dependencies> ``` 此模块可以被其他子模块共享使用。 --- #### 创建业务处理子模块 (engine) 业务逻辑通常封装在此模块中。需要引入数据库访问支持以及事务管理等功能。例如,在 `pom.xml` 中加入以下内容: ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> ``` 同时配置数据源信息到 `application.yml` 文件中: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver ``` 以上设置确保了与 MySQL 数据库的成功连接。 --- #### 配置网关模块 (gateway) Spring Cloud Gateway 是新一代 API 网关框架,具有高性能特点。可以通过以下方式引入并启用: 在 `pom.xml` 中添加 Starter: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> ``` 随后编写路由规则至 `application.yml` 文件: ```yaml spring: cloud: gateway: routes: - id: user_service_route uri: lb://USER-SERVICE predicates: - Path=/users/** ``` 这段 YAML 定义了一个简单的负载均衡路径匹配规则[^2]。 --- #### 使用 Nacos 进行服务注册与发现 Nacos 不仅是一个服务注册中心,还提供了动态配置管理能力。安装完成后需执行命令开放本地回环接口权限: ```bash sudo iptables -A INPUT -i lo -j ACCEPT ``` 接着修改项目的 `bootstrap.yml` 来指定 Nacos 地址: ```yaml spring: application: name: demo-service cloud: nacos: discovery: server-addr: localhost:8848 ``` 这样就完成了基本的服务注册流程[^4]。 --- #### 实现流量控制与熔断机制 (Sentinel) 为了增强系统的稳定性,推荐集成 Sentinel 组件来实施限流和降级措施。首先声明依赖关系: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> ``` 之后按照官方文档完成具体参数调整即可生效。 --- #### 总结 本文档介绍了从零开始建立一个完整的 Spring Cloud Alibaba 工程所需的主要环节及其对应的技术要点。每一步都紧密围绕实际开发需求展开论述,并辅以实例说明以便理解吸收。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值