spring boot 根据目录结构自动生成路由前缀

1.

.新建一个类 继承 RequestMappingHandlerMapping

重写 getMappingForMethod 方法

package com.boot.missyou.core.hack;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;

import java.lang.reflect.Method;

public class AutpPrefixMapping extends RequestMappingHandlerMapping {
    @Value("${missyou.api-package}")
    private String  packagePath;

    @Override
    protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) {
      RequestMappingInfo reinfo =  super.getMappingForMethod(method, handlerType);
      if (reinfo!=null) {
          String prefix = this.getPrefix(handlerType);          // 替换并且合并为新路径
          RequestMappingInfo  newrequestMappingInfo =RequestMappingInfo.paths(prefix).build().combine(reinfo);
          return newrequestMappingInfo;
      }
      return reinfo;
    }    //  获取前缀
    public  String  getPrefix(Class<?> handlerType) {
       String packName =  handlerType.getPackage().getName();
       String doPath = packName.replaceAll(this.packagePath, "");
       return doPath.replace(".","/");
    }
}

2.重新一个类让容器发现    AutpPrefixMapping 类

采用

@Component  + 继承 WebMvcRegistrations
package com.boot.missyou.core.congiguration;

import com.boot.missyou.core.hack.AutpPrefixMapping;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
@Component
public class AutoPrefixConfigration implements WebMvcRegistrations {

    @Override
    public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
        return  new AutpPrefixMapping();
    }
}

3. 添加配置  属性

application.properties

missyou.api-package = com.boot.missyou.api

为了 可以在类中访问到

4.添加 controller

package com.boot.missyou.api.v1;
import com.boot.missyou.exception.http.ForbiddenException;
import com.boot.missyou.service.BannerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(value = "轮播图", tags = {"用于轮播图的相关接口"})
@RestController
@RequestMapping("/banner")
public class BannerController {
    @Autowired
    private BannerService bannerService;
    @ApiOperation(value = "轮播图", notes = "轮播图", httpMethod = "GET")
    @GetMapping("/test")
    public String test() {
        throw new ForbiddenException(1001);
//        return "hell cworld111333";
    }
}

这个controller位于 v1 的包下

5.测试

原文地址:https://www.cnblogs.com/guangzhou11/p/12346208.html

时间: 2024-08-28 20:03:41

spring boot 根据目录结构自动生成路由前缀的相关文章

自定义的Spring Boot starter如何设置自动配置注解

本文首发于个人网站:自定义的Spring Boot starter如何设置自动配置注解 在Spring Boot实战之定制自己的starter一文最后提到,触发Spring Boot的配置过程有两种方法: spring.factories:由Spring Boot触发探测classpath目录下的类,进行自动配置: @Enable:有时需要由starter的用户触发*查找自动配置文件的过程. 实战 接着上篇文章的例子,首先将spring.factories中的内容注释掉 #org.springf

使用Spring Boot开发者工具进行自动重启和页面自动刷新

简介 大家可能都听说过开发Node.js应用时可以使用多种工具对开发者提供便利,如WebPack提供了开发者服务器来支持js应用动态更替,并在保存文件时自动刷新浏览器.Spring Boot也提供了相似的开发者工具,让我们更快速.更舒心的开发Spring Boot应用.大家看完本教程就可以学会如何如用Spring Boot开发者工具进行自动重启和自动刷新页面. 自动重启原理 Spring Boot的开发者工具会为应用创建两个classloader.一个是用来加载不会变动的类,称为base cla

Spring boot 梳理 - 代码结构(Main类的位置)

Spring boot 对代码结构无特殊要求,但有个套最佳实践的推荐 不要使用没有包名的类.没有包名时,@ComponentScan, @EntityScan, or @SpringBootApplication 可能会有问题. Main类在包路径中的位置:强烈建议main类放在包的根路径上.We generally recommend that you locate your main application class in a root package above other classe

Spring boot中使用springfox来生成Swagger Specification小结

Rest接口对应Swagger Specification路径获取办法: 根据location的值获取api   json描述文件 也许有同学会问,为什么搞的这么麻烦,api json描述文件不就是http://domain:port/v2/api-docs获取的么. 因为如果使用group,api json描述文件就不是上面的情况哦 https://github.com/springfox/springfox-demos/tree/master/boot-swagger 再小结一下swagge

spring和mybatis集成,自动生成model、mapper,增加mybatis分页功能

软件简介 Spring是一个流行的控制反转(IoC)和面向切面(AOP)的容器框架,在java webapp开发中使用广泛.http://projects.spring.io/spring-framework/ MyBatis是一个基于Java的数据持久层框架,其原名是iBatis,在升级到3.0版本后,更名为MyBatis.https://github.com/mybatis/mybatis-3/ MyBatis Generator是一个MyBatis的代码生成器,通过配置,可自动生成数据操作

TP5学习基础二:目录结构、URL路由、数据操作

一.安装1.使用git或者composer(composer update)进行实时更新,区别在于git不会清空核心框架目录而composer会清空.2.使用官网打包好的TP压缩包(解压即可用)->不是实时更新更新3.国内的码云和Coding代码托管平台都有ThinkPHP5的镜像 ============================================================================================================

spring boot中利用mybatis-generator插件生成代码

使用Idea在spring boot中集成mybatis-generator,自动生成mapper.xml  model  dao 文件 一.配置 pom.xml 在pom.xml的<plugins>标签下增加如下配置 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <

Spring 中使用 Mybatis generator 自动生成代码

Mybatis generator 是一个 Mybatis 插件,可以用于自动生成项目中需要的 pojo 类.对应的 Mapper 接口和 mapper.xml 文件.使用该插件,一方面可以节省开发时间,另一方面也避免手写时打错字的问题. 由于工作需要,我打算在原有的 Spring 项目中使用 Mybatis generator 自动生成代码,以便简化 DAO 层的开发. 闲言少叙,just do it! 1. 引入依赖 a. 父模块配置 <properties> <spring_ver

通过Spring Boot整合Mybatis分析自动配置详解

前言 SpringBoot凭借"约定大于配置"的理念,已经成为最流行的web开发框架,所以有必须对其进行深入的了解:本文通过整合Mybatis类来分析SpringBoot提供的自动配置(AutoConfigure)功能,在此之前首先看一个整合Mybatis的实例. SpringBoot整合Mybatis 提供SpringBoot整合Mybatis的实例,通过Mybatis实现简单的增删改查功能: 1.表数据 CREATE TABLE `role` (  `note` varchar(2