品达通用权限系统-Day03

1. 概述

本节主要讲述,lombok的功能简单使用,项目引入,以及项目所需要的中间件的安装,如:nacos,redis。

2. lombok(编码效率工具)

2.1 lombok 简介

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>

2.2 安装lombok插件

要使用lombok需要在IDE中安装对应的lombok插件。本课程使用的开发工具为IntelliJ IDEA,安装插件过程如下:

1、打开IntelliJ IDEA后点击菜单栏中的File–>Settings进入到设置页面

2、点击设置页面中的Plugins进行插件的安装,在右侧选择Browse repositories…,然后在搜索页面输入lombok,可以查询到下方的Lombok Plugin,鼠标点击Lombok Plugin可在右侧看到Install按钮,点击该按钮便可安装

在这里插入图片描述

2.3 lombok常用注解

序号注解说明备注
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变量,用于记录日志

2.4 lombok入门案例

第一步:创建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文件内容

3. Nacos(服务注册和配置中心)

本项目使用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(改文件课件提供)。

在这里插入图片描述

导入完成后如下:

在这里插入图片描述

4. Redis(Windows版安装及使用)

在项目开发阶段我们使用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管理界面

在这里插入图片描述

5. 项目搭建

5.1 项目导入

鉴于时间关系,我们不再手动创建工程,而是直接从课程资料中提供的初始工程pinda-authority导入即可。

导入步骤:

1、将初始工程pinda-authority复制到任意没有中文和空格的目录下

2、打开IDEA,选择Open,选择pinda-authority工程目录即可,导入后maven会download很多pom.xml中的组件

在这里插入图片描述

导入的项目结构如下:

在这里插入图片描述

5.2 项目模块介绍

品达通用权限系统项目整体工程结构和模块功能如下:

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-gateway8760网关服务java -jar pd-gateway.jar &
pd-auth-server8764权限服务java -jar pd-auth-server.jar &

由于本系统是基于当前非常流行的前后端分离开发方式开发,其中前端部分是由专门的前端开发人员负责,我们课程中直接使用即可。

5.3 开发方式介绍

通过前面导入的初始项目可以看到,pd-tools工程中的各个子模块已经完成了开发,这些子模块属于项目的基础组件,为我们后续开发网关服务和权限服务提供支持,而且有一些子模块在其他项目中也可以复用。由于这些子模块会涉及到一些新技术或者框架,所以本课程会先讲解这些新技术或者框架的使用方法,然后再带领大家通读pd-tools中的相关模块的代码实现,从而了解此模块的作用和开发过程。

本课程会按照如下顺序介绍pd-tools中的各个模块:

步骤模块\知识点\技能点说明
1pd-tools-swagger2文档组件:knife4j文档
2pd-tools-common基础组件:基础配置类、函数、常量、统一异常处理、undertow服务器
3pd-tools-core核心组件:基础实体、返回对象、上下文、异常处理、分布式锁、函数、树
4pd-tools-databases数据源组件:数据源配置、数据权限、查询条件等
5pd-tools-dozer对象转换:dozer配置、工具
6pd-tools-j2cache缓存组件:j2cache、redis缓存
7pd-tools-jwtJWT组件:配置、属性、工具
8pd-tools-log日志组件:日志实体、事件、拦截器、工具
9pd-tools-user用户上下文:用户注解、模型和工具,当前登录用户信息注入模块
10pd-tools-validator表单验证: 后台表单规则验证
11pd-tools-xssxss防注入组件

学习完这些模块之后就可以开发后面的网关服务和权限服务了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若行若冲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值