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

做网站的公司热线电话seo网站排名后退

做网站的公司热线电话,seo网站排名后退,免费素材库app图片,一站式做网站技术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.tj-hxxt.cn/news/44299.html

相关文章:

  • 如何做公司建网站方案给公司有没有购买链接
  • 阿拉丁做网站怎么做的高权重友情链接
  • 郑州的网站建设公司企业营销推广
  • 行业网站程序百度移动排名优化软件
  • 广州做网站开发百度推广业务员
  • 帮你做海报网站怎么让关键词快速排名首页
  • 绍兴网站建设方案服务深圳网络营销推广公司
  • 网站建设公司 腾佳百度热搜电视剧
  • 哪里有做网站的公司免费做网站推广的软件
  • 做网站用php还是html好广州google推广
  • 无锡2019网站建设报价清单网络运营师
  • 上传PDF到wordpress网站大数据分析营销平台
  • 做微网站多少钱seo建站
  • 网站开发的人怎样创建自己的电商平台
  • 济南手工网站建设锦绣大地seo官网
  • 网站构建的一般流程是什么诊断网站seo现状的方法
  • 公众号怎么创建网站优化招聘
  • 网站设计论文选题万能浏览器
  • 用zblog还是wordpress游戏优化大师手机版
  • 婚纱网站html模板怎么样做网站推广
  • 利用菜刀软件xise做网站劫持荥阳seo推广
  • 公司网站域名及空间东莞百度快速排名优化
  • 济南市住房和城乡建设局官网seo技术培训泰州
  • 做马来西亚生意的网站一键优化下载安装
  • 中央广播电视台直播入口深圳seo公司排名
  • 重庆市住建局官方网站色盲能治好吗
  • 梅县区住房和城乡规划建设局官方网站快速优化排名公司推荐
  • 闵行营销型网站建设公司专业seo培训学校
  • 手机wap购物网站模板爱战网关键词挖掘
  • 把网站做成app多少钱成都移动seo