需求描述
如目前如下各Controller
kim.nzxy.modules
├── article
| ├── AddressController.java
| └── ArticleController.java
└── system
├── RoleController.java
└── UserController.java
现在想给article
包下所有接口添加article
前缀, 而system
包下所有接口添加system
前缀
或者给非UserController都添加一个统一的project
前缀
等等一些规则来添加前缀
效果预览
修改前
修改后
修改方式
添加配置类
package kim.nzxy.demo.config;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @author ly-chn
*/
@Component
public class ApiPrefixConfig implements WebMvcConfigurer {
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
// 给包名以xx结尾的添加统一后缀
for (String prefix : new String[]{"article", "system"}) {
configurer.addPathPrefix(prefix, c -> c.getPackageName().endsWith(prefix));
}
// c即具体controller类
configurer.addPathPrefix("前缀", c -> {
// 是否有相关注解啦
boolean annotationPresent = c.isAnnotationPresent(RestController.class);
// 类名啦
String name = c.getName();
// 等等你想要的其它的啦
return false;
});
}
}
只需要给特定情况添加前缀即可啦