赞
踩
本节主要讲述,lombok的功能简单使用,项目引入,以及项目所需要的中间件的安装,如:nacos,redis。
lombok是一个开源的代码生成库,能以简单的注解形式来简化Java类中的大量样板代码,提高开发人员的开发效率。
例如:开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量。
lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法,使代码看起来更简洁。
lombok对应的maven坐标:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
要使用lombok需要在IDE中安装对应的lombok插件。本课程使用的开发工具为IntelliJ IDEA,安装插件过程如下:
1、打开IntelliJ IDEA后点击菜单栏中的File–>Settings进入到设置页面
2、点击设置页面中的Plugins进行插件的安装,在右侧选择Browse repositories…,然后在搜索页面输入lombok,可以查询到下方的Lombok Plugin,鼠标点击Lombok Plugin可在右侧看到Install按钮,点击该按钮便可安装

| 序号 | 注解 | 说明 | 备注 |
|---|---|---|---|
| 1 | @Setter | 注解在类或属性,注解在类时为所有属性生成setter方法,注解在属性上时只为该属性生成setter方法 | |
| 2 | @Getter | 使用方法同@Setter,区别在于生成的是getter方法 | |
| 3 | @ToString | 注解在类,添加toString方法 | |
| 4 | @EqualsAndHashCode | 注解在类,生成hashCode和equals方法 | |
| 5 | @NoArgsConstructor | 注解在类,生成无参的构造方法 | 常用 |
| 6 | @RequiredArgsConstructor | 注解在类,为类中需要特殊处理的属性生成构造方法,比如final和被@NonNull注解的属性 | |
| 7 | @AllArgsConstructor | 注解在类,生成包含类中所有属性的构造方法 | 常用 |
| 8 | @Data | 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法 | 常用,包含:1,2,3,4 |
| 9 | @Slf4j | 注解在类,生成log变量,用于记录日志 |
第一步:创建maven工程lombok_demo并配置pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.itcast</groupId> <artifactId>lombok_demo</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> </dependency> </dependencies> </project>
第二步:创建User类并加入lombok提供的注解
package cn.itcast.entity;
import lombok.*;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {
private int id;
private String name;
private int age;
}
第三步:创建测试类TestLombok
package cn.itcast; import cn.itcast.entity.User; public class TestLombok { public static void main(String[] args) { //无参构造方法 User user1 = new User(); /* setter方法 */ user1.setId(1); user1.setName("itcast"); user1.setAge(18); /* getter方法 */ int id = user1.getId(); String name = user1.getName(); int age = user1.getAge(); //带有所有参数的构造方法 User user2 = new User(2,"itheima",20); //建造者模式 User user3 = User.builder().id(3).name("boxuegu").age(22).build(); /* toString方法 */ System.out.println(user1.toString()); System.out.println(user2.toString()); System.out.println(user3.toString()); } }
注:可以使用反编译工具查看生成的class文件内容
本项目使用Nacos来作为服务的注册和配置中心。Nacos是阿里巴巴开源的一款支持服务注册与发现,配置管理以及微服务管理的组件。用来取代以前常用的注册中心(zookeeper , eureka等等),以及配置中心(spring cloud config等等)。Nacos是集成了注册中心和配置中心的功能,做到了二合一。
安装和配置过程如下:
第1步:下载Nacos安装包,地址https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.zip
第2步:将下载的zip压缩文件解压
第3步:修改配置文件:NACOS_HOME/conf/application.properties

# 修改范例如下:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

注意:Nacos在存储数据时既可以使用内置数据库存储,也可以通过第三方指定的数据库存储。我们上面指定了使用MySQL数据库来存储Nacos的相关数据,所以需要配置我们使用的MySQL数据库的数据源信息,这个可以根据自己的MySQL数据库进行相应调整,例如MySQL的地址、用户名、密码等。
第4步:创建数据库
CREATE DATABASE `nacos` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
第5步:执行NACOS_HOME/conf/nacos-mysql.sql数据库脚本文件,完成后可以看到创建了如下表


第6步:启动Nacos服务,双击NACOS_HOME/bin/startup.cmd

第7步:访问Nacos控制台,地址http://localhost:8848/nacos,默认用户名/密码:nacos/nacos
第8步:新建命名空间pinda-dev,描述:通用权限系统;对应的数据库表:tenant_info


注意,命名空间的id需要替换到项目文件pd-parent/pom.xml中对应的nacos命名空间的id:(该操作需要项目导入后修改)

第9步:导入配置文件,选择nacos配置中心的命名空间,点击导入配置按钮,选择文件:docs/nacos/nacos_config_export_2020-03-23 17_31_42.zip(改文件课件提供)。

导入完成后如下:

在项目开发阶段我们使用windows版的Redis,直接解压授课资料中redis-win32-win64.zip压缩文件,然后双击REDIS_HOME/64bit/redis-server.exe启动Redis服务即可使用。实际生产部署的时候使用Linux版的Redis.
redis服务端:redis-win32-win64.zip
redis管理工具:redisredis-desktop-manager-0.8.8.384.exe
(1)安装:直接解压授课资料中redis-win32-win64.zip压缩文件到一个”非中文的目录下“即可;
(2)启动服务:双击REDIS_HOME/64bit/redis-server.exe启动Redis服务即可使用


redisredis-desktop-manager管理界面

鉴于时间关系,我们不再手动创建工程,而是直接从课程资料中提供的初始工程pinda-authority导入即可。
导入步骤:
1、将初始工程pinda-authority复制到任意没有中文和空格的目录下
2、打开IDEA,选择Open,选择pinda-authority工程目录即可,导入后maven会download很多pom.xml中的组件

导入的项目结构如下:

品达通用权限系统项目整体工程结构和模块功能如下:
pinda-authority # 聚合工程,用于聚合pd-parent、pd-apps、pd-tools等模块 ├── pd-parent # 10000. 父工程,nacos配置及依赖包管理 ├── pd-apps # 20000. 应用目录 ├── pd-auth # 20100. 权限服务父工程 ├── pd-auth-entity # 20101. 权限实体 ├── pa-auth-server # 20102. 权限服务 ├── pd-gateway # 20201. 网关服务 └── pd-tools # 30000. 工具工程 ├── pd-tools-common # 30100. 基础组件:基础配置类、函数、常量、统一异常处理、undertow服务器 ├── pd-tools-core # 30200. 核心组件:基础实体、返回对象、上下文、异常处理、分布式锁、函数、树 ├── pd-tools-databases # 30300. 数据源组件:数据源配置、数据权限、查询条件等 ├── pd-tools-dozer # 30400. 对象转换:dozer配置、工具 ├── pd-tools-j2cache # 30500. 缓存组件:j2cache、redis缓存 ├── pd-tools-jwt # 30600. JWT组件:配置、属性、工具 ├── pd-tools-log # 30700. 日志组件:日志实体、事件、拦截器、工具 ├── pd-tools-swagger2 # 30800. 文档组件:knife4j文档 ├── pd-tools-user # 30900. 用户上下文:用户注解、模型和工具,当前登录用户信息注入模块 ├── pd-tools-validator # 31000. 表单验证: 后台表单规则验证 ├── pd-tools-xss # 31100. xss防注入组件
项目服务有两个:网关服务和权限服务:
| 应用 | 端口 | 说明 | 启动命令 |
|---|---|---|---|
| pd-gateway | 8760 | 网关服务 | java -jar pd-gateway.jar & |
| pd-auth-server | 8764 | 权限服务 | java -jar pd-auth-server.jar & |
由于本系统是基于当前非常流行的前后端分离开发方式开发,其中前端部分是由专门的前端开发人员负责,我们课程中直接使用即可。
通过前面导入的初始项目可以看到,pd-tools工程中的各个子模块已经完成了开发,这些子模块属于项目的基础组件,为我们后续开发网关服务和权限服务提供支持,而且有一些子模块在其他项目中也可以复用。由于这些子模块会涉及到一些新技术或者框架,所以本课程会先讲解这些新技术或者框架的使用方法,然后再带领大家通读pd-tools中的相关模块的代码实现,从而了解此模块的作用和开发过程。
本课程会按照如下顺序介绍pd-tools中的各个模块:
| 步骤 | 模块\知识点\技能点 | 说明 |
|---|---|---|
| 1 | pd-tools-swagger2 | 文档组件:knife4j文档 |
| 2 | pd-tools-common | 基础组件:基础配置类、函数、常量、统一异常处理、undertow服务器 |
| 3 | pd-tools-core | 核心组件:基础实体、返回对象、上下文、异常处理、分布式锁、函数、树 |
| 4 | pd-tools-databases | 数据源组件:数据源配置、数据权限、查询条件等 |
| 5 | pd-tools-dozer | 对象转换:dozer配置、工具 |
| 6 | pd-tools-j2cache | 缓存组件:j2cache、redis缓存 |
| 7 | pd-tools-jwt | JWT组件:配置、属性、工具 |
| 8 | pd-tools-log | 日志组件:日志实体、事件、拦截器、工具 |
| 9 | pd-tools-user | 用户上下文:用户注解、模型和工具,当前登录用户信息注入模块 |
| 10 | pd-tools-validator | 表单验证: 后台表单规则验证 |
| 11 | pd-tools-xss | xss防注入组件 |
学习完这些模块之后就可以开发后面的网关服务和权限服务了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。