java中自定义注解
java自定义注解及应用
先简单记录一下怎么自定义注解后续增加解释(此配置仅在SpringBoot上尝试,SSM自行配置基本略同)
- 创建自定义注解LoginRequired
/**
* @author Tireless
* @version 1.0
* @description: 登录注解
* @date 2022/6/18 17:46
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginRequired {
}
该注解主要是用于标记需要验证方法或者类
2.创建简单的controller类用于测试
/**
* @author Tireless
* @version 1.0
* @description: TODO
* @date 2022/6/18 17:43
*/
@RestController
public class LoginController {
@GetMapping("/A")
public String sourceA(){
return "正在访问A";
}
@LoginRequired
@GetMapping("/B")
public String sourceB(){
return "正在访问B";
}
}
浏览器分别访问http://localhost:8080/A和http://localhost:8080/B
可以见到访问正常(这里不贴图片了)
3.创建拦截器
/**
* @author Tireless
* @version 1.0
* @description: 拦截器
* @date 2022/6/18 17:48
*/
public class SourceInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 反射获取方法上的LoginRequred注解
HandlerMethod handlerMethod = (HandlerMethod)handler;
LoginRequired loginRequired = handlerMethod.getMethod().getAnnotation(LoginRequired.class);
if(loginRequired == null){
return true;
}
// 有LoginRequired注解说明需要登录,提示用户登录
response.setContentType("application/json; charset=utf-8");
response.getWriter().print("你访问的资源需要登录");
return false;
}
}
4.配置拦截器
/**
* @author Tireless
* @version 1.0
* @description: TODO
* @date 2022/6/18 17:50
*/
@Configuration
public class InterceptorTrainConfigurer implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 添加拦截器
registry.addInterceptor(new SourceInterceptor()).addPathPatterns("/**");
}
}
- 浏览器再次分别访问A和B
至此自定义注解完成,注解极大简化开发中代码美观性,这里也仅仅是简单的Demo,后续有时间继续补充
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!