控制器拦截器配置
>s easyapi生成的接口文档总共分为两层,上层单位是控制器,下层单位是接口,
控制器的默认扫描规则是通过**spring ioc**拿到全部的**controller**类,本文讲解如何打破默认规则,自己定义控制器扫描方案。
[ApiExtra参数](doc:S3E9eryY)是拦截器解析依据的重要参数
```java
/**
* 接口文档配置
*/
@Configuration
public class EasyApiConfig extends DefaultConfigurationCreator {
@Override
public AllConfiguration replenish(AllConfiguration configuration) {
//拿到控制器配置类,根据自身的规则定义文档生成规则
ReadControllerConfig controllerConfig = configuration.getReadControllerConfig();
return super.replenish(configuration);
}
}
```
### 控制器拦截器配置:**ReadControllerConfig** ,具体可配置规则如下
**addReadController** : `添加控制器扫描规则,返回需要被当作控制器的class类集合,默认通过IOC容器中获取Controller标识的Bean.传入ReadControllers接口实现类,接口为函数式接口,可使用 lambda 表达式快速编写实现`
```java
controllerConfig.addReadController(springContext -> Arrays.asList(UserController.class));
```
---
**addReadAuthor** : `添加控制器作者读取规则,传入ReadControllerAuthor接口实现类,接口为函数式接口,可使用 lambda 表达式快速编写实现`
```java
controllerConfig.addReadAuthor((controller, extra) -> controller.getName());
```
---
**addReadDescription** : `添加控制器说明读取规则,传入ReadControllerDescription接口实现类,接口为函数式接口,可使用 lambda 表达式快速编写实现`
```java
controllerConfig.addReadDescription((controller, extra) -> extra.getControllerComment().getComment());
```
---
**addReadIgnore** :`添加控制器忽略规则,传入ReadControllerIgnore接口实现类,接口为函数式接口,可使用 lambda 表达式快速编写实现`
```java
controllerConfig.addReadIgnore ((controller, extra) -> true);
```
---
**addReadRequestPath** :`添加控制器统一请求路径读取规则,传入ReadControllerRequestPath接口实现类,接口为函数式接口,可使用 lambda 表达式快速编写实现`
```java
controllerConfig.addReadRequestPath ((controller, extra) -> "");
```
---
**addReadShow** : `添加控制器是否显示规则,假如有时候不想展示相关控制器,但又不想删除历史的测试数据等,可以使用本拦截器来控制不显示。传入ReadControllerShow接口实现类,接口为函数式接口,可使用 lambda 表达式快速编写实现`
```java
controllerConfig.addReadShow((controller, extra) -> false);
```
---
**addReadShowName** : `添加控制器在页面中显示的名称,传入ReadControllerShowName接口实现类,接口为函数式接口,可使用 lambda 表达式快速编写实现`
```java
controllerConfig.addReadShowName((controller, extra) -> controller.getName());
```
---
### 控制器拦截器默认实现类
ControllerAuthorApiReader : `使用ApidocComment注解读取控制器作者`
ControllerAuthorCommentReader : `使用源码读取控制器作者`
ControllerAuthorSwaggerReader:`使用swagger注解读取控制器作者`
ControllerDescApiReader :`使用ApidocComment读取控制器说明`
ControllerDescCommentReader :`使用源码读取控制器说明`
ControllerDescSwaggerReader :`使用swagger注解读取控制器说明`
ControllerIgnoreApiReader :`使用ApidocComment读取忽略规则`
ControllerIgnoreCommentReader :`使用源码读取忽略规则`
ControllerIgnoreSwaggerReader :`使用swagger注解读取忽略规则`
ControllerShowNameApiReader:`使用ApidocComment读取显示名称`
ControllerShowNameCommentReader :`使用源码读取显示名称`
ControllerShowNameSwaggerReader :`使用swagger注解读取显示名称`