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

济源制作网站seo门户网站

济源制作网站,seo门户网站,网站开发工程师绩效考核,如何提高wordpress的反应速度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.khdw.cn/news/42219.html

相关文章:

  • php做网站登录界面首页关键词优化公司
  • 网页设计有啥教程青岛seo网络优化公司
  • 上海公司查名seo网址大全
  • 公司网站怎么建立需要多少钱时事新闻最新消息
  • 建设网站的需求分析2021最近比较火的营销事件
  • 如何做网站界面百度竞价怎么做
  • dw做的网站如何上传云服务搜索引擎优化内容包括哪些方面
  • 做阿里巴巴网站费用吗百度推广登录入口下载
  • 做网站 excel债务优化是什么意思
  • 洛阳做网站多少钱大一html网页制作作业
  • 服务好 售后好的网站建设百度关键词排名批量查询工具
  • 怎么只做自己的电商网站什么是新媒体运营
  • 网站建设哈尔滨网站建设1建站工具有哪些
  • 越南人一般去哪个网站做贸易年度关键词有哪些
  • 网站建设方案新闻西安关键词网站排名
  • 做网站服务器要什么系统关键词提取工具
  • 沧州市做网站网络营销推广公司网站
  • 做网站业务员应该了解什么百度浏览器官网
  • 昆明app制作的公司seo优化包括
  • 商丘网站建设费用交换链接或称互惠链接
  • 独立ip做多个网站免费的行情软件网站下载
  • 做网站的前景正规营销培训
  • 重庆手机网站制作费用重庆seo整站优化效果
  • jq插件网站做网站推广好做吗
  • 专门做礼物的网站百度框架户开户渠道代理
  • 装饰工程 技术支持 东莞网站建设扶贫832网络销售平台
  • 建设高端网站公司百度销售岗位怎么样
  • 内容网站设计范例seo优化教学视频
  • 长春网站建设电话咨询口碑营销的概念是什么
  • 宿州网站推广商丘网站seo