当前位置: 首页 > news >正文

word可以做网页吗m郑州网站优化公司哪家好

word可以做网页吗m,郑州网站优化公司哪家好,安阳市城乡建设规划局网站,网站后台默认密码AOP不用多说,是spring框架的两大基石之一。SpEL是Spring Expression Language的缩写,意为Spring表达式语言,,其支持在运行时查询和操作对象图提供了更加丰富的功能,最特别的是方法调用与字符串模板功能。熟悉js的es6语…

         AOP不用多说,是spring框架的两大基石之一。SpEL是Spring Expression Language的缩写,意为Spring表达式语言,,其支持在运行时查询和操作对象图提供了更加丰富的功能,最特别的是方法调用与字符串模板功能。熟悉js的es6语法的小伙伴都知道,模板字符串,这个spel就类似js的模板字符串。

         本次代码主要是熟悉使用语法,并布对应实际的应场景。

一、自定义注解

@Target({ElementType.PARAMETER,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface TestAopAnn {/*** spEL* @return*/String  spEL() default "";
}

二、自定义切面

@Aspect
@Component
public class TestAopAspect {private final static Logger LOGGER = LoggerFactory.getLogger(TestAopAspect.class);@Pointcut("@annotation(org.example.boot3.aop.TestAopAnn)")public void pointCut(){}@AfterReturning(value = "pointCut()",returning = "result")public   void  doAfter(JoinPoint joinPoint,Object result){Method method = getMethod(joinPoint);TestAopAnn annotation = method.getAnnotation(TestAopAnn.class);if(annotation!=null){LOGGER.info("TestAopAspect-->doAfter-------后置织入");/// 通过spel表达式获取到形参的中name的值String value =getValue(joinPoint, method, annotation.spEL());LOGGER.info("TestAopAspect-->doBefore-------value={}",value);/// 将name追加到返回的listtry {if(result!=null && result instanceof List){List  list = (List) result;list.add(value);}} catch (Exception e) {e.fillInStackTrace();}}}private   Method  getMethod(JoinPoint  joinPoint) {Signature signature = joinPoint.getSignature();MethodSignature methodSignature = (MethodSignature) signature;return methodSignature.getMethod();}/**解析spel*/private String  getValue(JoinPoint  joinPoint,  Method method,String elStr){StandardEvaluationContext context = new StandardEvaluationContext();DefaultParameterNameDiscoverer parameterNameDiscoverer = new DefaultParameterNameDiscoverer();/// 方法参数名称String[] parameterNames = parameterNameDiscoverer.getParameterNames(method);Assert.isTrue(parameterNames!=null,"参数列表不能为空");///方法参数值Object[] args = joinPoint.getArgs();for (int i = 0; i < parameterNames.length; i++) {context.setVariable(parameterNames[i],args[i]);}ExpressionParser parser = new SpelExpressionParser();Expression expression = parser.parseExpression(elStr);return (String) expression.getValue(context);}
}

三、测试接口

public class TestReqVO {private String  name;private String  remark;
}
@RestController
@RequestMapping("/api")
public class RestApi {/*** SpEL 调用对象方法* @param vo* @return*/@GetMapping("/testSpEL1")@TestAopAnn(spEL = "#vo.getName()")public List<String> getSpELList1(TestReqVO vo){String[] arr = { "C" ,"C++","JAVA","GoLang","Rust","Python"};return new ArrayList<>(Arrays.stream(arr).toList());}/*** SpEL 调用对象属性* @param vo* @return*/@GetMapping("/testSpEL2")@TestAopAnn(spEL = "#vo.name")public List<String> getSpELList2(TestReqVO vo){String[] arr = { "C" ,"C++","JAVA","GoLang","Rust","Python"};return  new ArrayList<>(Arrays.stream(arr).toList());}@GetMapping("/fluxList")public Flux<List<String>> getSpEL2(){String[] arr = { "C" ,"C++","JAVA","GoLang","Rust","Python"};ArrayList<String> list = new ArrayList<>(Arrays.asList(arr));return Flux.just(list);}}

​​​​​​​

http://www.yayakq.cn/news/230518/

相关文章:

  • 西宁城东区建设局公租房网站网站维护更新费用
  • 网站建设维护和网页设计江都建设总部网站
  • 教育模板网站建设如何制作淘客导购网站
  • 天津做网站报价做网站开发教程
  • 33岁改行做网站建设谷歌seo网站推广怎么做优化
  • 乡镇网站建设中的问题近期十大热点事件
  • 网站建设与维护难不难李沧做网站公司
  • 平谷青岛网站建设网站设计流程详细步骤
  • 着力规范网站集约化建设静态网站结构如何更新
  • 5a景区网站建设沧州网站建设联系电话
  • 白酒网站设计网站开发教程百度云
  • 企业网站源码千博畜牧养殖企业网站源码
  • 外卖优惠券网站怎么做自己做app的网站
  • 网店的网站设计方案淘大象关键词排名查询
  • 驻马店建设网站贵阳百度公司建网站电话
  • 海南中小企业网站建设智慧宁乡app
  • 官网网站建设企业做网站前台要学什么课程
  • 手机网站 jquery 特效网站建设的企业目标
  • 一站式建设网站全球优秀网页设计机构
  • 淮安网站建设推广个人网站备案 内容
  • 中国建设银行浙江省丽水市分行网站wordpress 预订 插件
  • 威海屋顶防水价格威海做防水网站公众号登录超时
  • 企业网站keywords最多几个阿里云建设网站流程
  • 网站备案最快几天家庭宽带做网站稳定吗
  • 南海做网站全国企业信用信息公开系统查询
  • 免费网站正能量怎么弄免费的php空间做网站
  • 做网站的服务器有什么作用icp备案查看网站内容吗
  • 传奇广告网站怎么做江门网站开发多少钱
  • 现在1做啥网站流量大广西建设职业技术学院网站
  • 网站建设许可证福州做网站设计外包