快速上手ruoyi系统,快速利用代码生成进行业务开发

本文介绍了ruoyi系统的关键组成部分,如工程目录、@InitBinder注解的应用、SpringSecurity的身份验证,以及详细的日志配置和代码生成流程,包括数据库建表、Vue页面和Element-Plus插件的使用。
摘要由CSDN通过智能技术生成

简单介绍ruoyi系统,以及在官网的代码基础上快速二开

介绍一下ruoyi系统的工程目录

在这里插入图片描述

ruoyi中的部分注解,jar包

(1)@InitBinder
作用是,前端传过来的参数进行转换,进行对象的封装,也可以传递相同的变量名属于不同对象的参数。
原文链接:https://www.cnblogs.com/better-farther-world2099/articles/10971897.html
但是不常用,了解即可。
在这里插入图片描述
ruoyi中使用到的地方,在BaseController中,进行日期对象的转换。
在这里插入图片描述

(2)@Target 和 @Retention
一个是目标,一个是保留。他们是注解的注解,叫元注解。
在这里插入图片描述
在ruoyi中随处可见,其中ruoyi的日志功能还是写的比较好的,通过@log()的方式,添加在每一个请求前面,记录所有请求的操作日志。
在这里插入图片描述
其中日志文件记录,以及日志文件输出格式的控制在logback.xml文件中书写的很明白,与其相关的jar包只有slf4j和logback,其他的lombook你可以自己用什么的。

 <!--slf4j日志门面-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.26</version>
        </dependency>
        <!--logback日志实现-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

其中模范的日志文件配置如下:

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <property name="LOG_CONTEXT_NAME" value="web-app"/>
    <!--定义日志文件的存储地址 勿在LogBack的配置中使用相对路径-->
    <property name="LOG_HOME" value="logs/${LOG_CONTEXT_NAME}"/>
    <!-- 定义日志上下文的名称 -->
    <contextName>${LOG_CONTEXT_NAME}</contextName>

    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>

    <!--info日志统一输出-->
    <appender name="file.info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <Prudent>true</Prudent>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名,按小时生成-->
            <FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}/info/info.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
            <!--日志文件输出的文件名,按天生成-->
            <!--<FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}/error/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>-->
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始 -->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名  %L 行数 %msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件只记录info级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <!--错误日志统一输出-->
    <appender name="file.error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--省略,参考file.info appender-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--warn日志统一输出-->
    <appender name="file.warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--省略,参考file.info appender-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--  日志输出级别 -->
    <root level="debug">
        <appender-ref ref="console"/>
        <appender-ref ref="file.error"/>
        <appender-ref ref="file.info"/>
        <appender-ref ref="file.warn"/>
    </root>

    <!-- 某类/包下的所有日志使用file.info appender输出-->
    <logger name="cn.ybzy.demo.controller.TestController" additivity="false">
        <appender-ref ref="file.info"/>
    </logger>

	<logger name="org.hibernate.SQL">
        <level value="DEBUG"/>
    </logger>

</configuration>

(3)spring security 身份认证,静态资源配置的地方,添加各种过滤器。
在domain-freamwork / config /Security 这个文件中。
在这里插入图片描述

模拟ruoyi系统,自己新建一个系统

在这里插入图片描述

使用ruoyi自带的代码生成功能

ruoyi非常便捷的就可以创建一个前端页面,对应的路由,权限,后端的controller,service,mapper等。你只需要创建一个数据库的表,它就可以帮你写好后端的增删改查和前端的页面数据展示,还是比较好看的。

step1,进行数据库的建表工作,要写清楚注释,因为代码生成需要前端表格来进行页面展示。

在启动类domain的项目中设置数据库,redis的连接等等。

step2,进入ruoyi的菜单管理界面,生成自己想要的meun部分,包括设置权限,路由。

在这里插入图片描述

step3 ,进入代码生成的页面,导入新建的数据库表单,会自动生成前端和后端代码,以及数据库的菜单数据。

在这里插入图片描述

导入的时候,它会自己自动查询数据库中的表,你只要选择表名即可。

ruoyi系统启动流程,按照reade.me文件运行即可。

理解一些ruoyi系统的细节:

1,关于用户获取与权限验证,ruoyi使用的是spring SecurityUtils里面的功能来进行用户信息的获取。其他的想法包括利用redis来存取用户信息,利用线程ThreadLocal来进行用户身份的验证,只要盐城唯一标识里面包含用户信息,表示用户的身份证还没有过期,还可以继续请求,每一个请求都只有一个标识符,所以需要在拦截器中加入当前登录系统的用户信息,也方便日志信息的书写。

2.关于vue文件,跟html文件很相似,里面也是书写页面的布局,也可以书写一些js函数,其中会用到很多插件,比较好用的有element-plus这个插件用起来比较方便。

3.其中关于代码生成模块,你可以自己去改代码生成的格式以及数据库查询方式,ruoyi原生一般是使用mapper.xml的方式来进行sql语句的编写,其中分页查询,使用的是aop切片的方式进行查询的。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值