springboot2.0中怎么通过自定义注解获取方法返回值
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章将为大家详细讲解有关springboot2.0中怎么通过自定义注解获取方法返回值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。springbo
千家信息网最后更新 2025年12月01日springboot2.0中怎么通过自定义注解获取方法返回值
这篇文章将为大家详细讲解有关springboot2.0中怎么通过自定义注解获取方法返回值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
springboot2.0 自定义注解通过类或者方法切面并且获取方法的返回值
新增一个自定义注解
package com.example.demo.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Target;@Target({ElementType.METHOD,ElementType.FIELD,ElementType.TYPE})public @interface TestA {}新增一个切面,
package com.example.demo.Aspect;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;import javax.servlet.http.HttpServletRequest;/** * @auth: xinhui * @date: **/@Slf4j@Aspect@Componentpublic class DemoAspect { @Pointcut("@within(com.example.demo.annotation.TestA)")//注解在类上的用 //@Pointcut("@annotation(com.example.demo.annotation.TestA)")//注解在方法上 public void addAdvice(){} @AfterReturning(returning = "rvl",pointcut="@within(com.example.demo.annotation.TestA)" )//注解在类上面//@AfterReturning(returning = "rvl",pointcut="@within(com.example.demo.annotation.TestA)" )//注解在方法上 public void afterReturn(JoinPoint joinPoint,Object rvl) throws ClassNotFoundException { Object[] args = joinPoint.getArgs();//参数 log.info("--------args:{}",args.length); log.info("============打印日志开始============"); log.info("target:{}",joinPoint.getTarget().getClass()); for(Object o:args) { log.info("参数:{}",o); } log.info("返回参数:{}",rvl); log.info("kind:{}",joinPoint.getKind()); String classType = joinPoint.getTarget().getClass().getName(); Class> clazz = Class.forName(classType); String clazzName = clazz.getName(); String methodName = joinPoint.getSignature().getName(); //获取方法名称 log.info("============打印日志结束============"); }}新增一个service类
package com.example.demo.test;import com.example.demo.annotation.TestA;import com.example.demo.model.SayEntity;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Service;/** * @auth: xinhui * @date: 2019/10/8 8:52 下午 **/@Service("demoTest")@Slf4j@TestApublic class DemoTest {// @TestA public SayEntity say(String saystr,String origin) {log.info("say is start"); SayEntity say = new SayEntity(saystr, origin); return say; }}新增controller信息
package com.example.demo;import com.example.demo.test.DemoTest;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.EnableAspectJAutoProxy;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@SpringBootApplication@RestController@EnableAspectJAutoProxy@ComponentScan(basePackages = {"com.example.demo"})public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Autowired DemoTest demoTest; @RequestMapping(value = "/demo/aop",method = RequestMethod.GET) public Object mapping(){ String say="say hello";String origin="origin"; return demoTest.say(say,origin); }}打印日志的信息
2019-10-09 11:41:42.829 INFO 2264 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''2019-10-09 11:41:42.832 INFO 2264 --- [ restartedMain] com.example.demo.DemoApplication : Started DemoApplication in 2.331 seconds (JVM running for 3.133)2019-10-09 11:41:48.810 INFO 2264 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'2019-10-09 11:41:48.810 INFO 2264 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'2019-10-09 11:41:48.819 INFO 2264 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 9 ms2019-10-09 11:41:48.856 INFO 2264 --- [nio-8080-exec-1] com.example.demo.test.DemoTest : say is start2019-10-09 11:41:48.858 INFO 2264 --- [nio-8080-exec-1] com.example.demo.Aspect.DemoAspect : --------args:22019-10-09 11:41:48.859 INFO 2264 --- [nio-8080-exec-1] com.example.demo.Aspect.DemoAspect : ============打印日志开始============2019-10-09 11:41:48.859 INFO 2264 --- [nio-8080-exec-1] com.example.demo.Aspect.DemoAspect : target:class com.example.demo.test.DemoTest2019-10-09 11:41:48.859 INFO 2264 --- [nio-8080-exec-1] com.example.demo.Aspect.DemoAspect : 参数:say hello2019-10-09 11:41:48.859 INFO 2264 --- [nio-8080-exec-1] com.example.demo.Aspect.DemoAspect : 参数:origin2019-10-09 11:41:48.860 INFO 2264 --- [nio-8080-exec-1] com.example.demo.Aspect.DemoAspect : 返回参数:SayEntity(say=say hello, eat=origin)2019-10-09 11:41:48.860 INFO 2264 --- [nio-8080-exec-1] com.example.demo.Aspect.DemoAspect : kind:method-execution2019-10-09 11:41:48.861 INFO 2264 --- [nio-8080-exec-1] com.example.demo.Aspect.DemoAspect : ============打印日志结束============
关于springboot2.0中怎么通过自定义注解获取方法返回值就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
注解
方法
参数
日志
信息
内容
切面
文章
更多
知识
篇文章
不错
名称
质量
o.a.c.c.C.
参考
帮助
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
信息网络技术专业就业前景
网吧网络安全责任部门
思恒科技网络技术
信息网络安全包括什么安全
ocm数据库怎么安装
rx5服务器异常无法播放音乐
存储服务器安装后会格式化硬盘吗
建oracle数据库步骤
2020网络安全条例
网站的数据库空间和网页空间
网络安全入门的书
无限白嫖国外云服务器
easyrec连数据库
《网络安全法》 等级保护
列宽数据库
数据库sql更改表名
阳光人寿软件开发
广州定制化服务器厂家
山东超级服务器虚拟主机
熊数据库
网吧网络安全责任部门
数据库中什么是非过程化
高密度服务器计算节点
lce服务器操作员 小文
重庆会计软件开发计划
数据库的语言
皮皮网络技术服务有限公司
量化软件开发用什么
网络安全宣讲案例
数据库编程需要什么app