自定义注解实现
先贴代码
自定义 Controller 注解:
package top.changelife.zero.core.annotation;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@RestController
@RequestMapping
public @interface CustomController {
/**
* 路径
*/
@AliasFor(annotation = RequestMapping.class)
String[] value() default {""};
/**
* 接口名称
*/
String name();
}
自定义 Mapping 注解:
package top.changelife.zero.core.annotation;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@RequestMapping
public @interface CustomMapping {
/**
* 路径
*/
@AliasFor(annotation = RequestMapping.class)
String[] value() default {""};
/**
* 请求方法
*/
@AliasFor(annotation = RequestMapping.class)
RequestMethod[] method() default {RequestMethod.GET};
/**
* 接口名称
*/
String name();
}
使用方式
package top.changelife.zero.core.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import top.changelife.zero.core.annotation.CustomController;
import top.changelife.zero.core.annotation.CustomMapping;
/**
* created by chenzhe 2019/4/11
*/
@CustomController(value = "/test", name = "测试controller")
public class TestController {
@CustomMapping(value = "/abc", name = "GET 接口 abc")
public Object getTest() {
return "This is abc interface,your request method is 'GET'.";
}
@CustomMapping(value = "/abc", name = "POST 接口 abc", method = RequestMethod.POST)
public Object postTest() {
return "This is abc interface,your request method is 'POST'.";
}
}