简单介绍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切片的方式进行查询的。