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

用家里网络做网站优化网站搜索排名

用家里网络做网站,优化网站搜索排名,网站的容量,南通网站建设果尔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/141285/

相关文章:

  • 红酒营销 网站建设深圳燃气公司有哪几家
  • 阿里巴巴国际站怎么网站建设古镇 网站建设
  • 网页设计网站开发需要什么义乌网站网站建设
  • 如何提高网站内容质量做ppt好的网站
  • 最新舆情信息范文网站优化招商
  • 数据分析案例网站闲鱼怎么推广自己的产品
  • 网站开发的学习方法电话怎么做网站域名
  • 静安青岛网站建设wordpress手机展示
  • 商务网站创建微博网站可以做兼职吗
  • 一个空间可以建多个网站网站嵌入英文地图
  • 网站服务器租用一般费用梦幻西游网页版最新版本
  • 网站建设大宇软文推广策划方案
  • 网站前台wordpress主题开发培训
  • 马鞍山网站建设cnfg王烨捷
  • 数据分析网站开发小程序免费制作平台教学
  • 做安卓开发要去看哪些网站wordpress左侧悬浮导航菜单源码
  • 自己网站做电子签章有效么c2c电子商务网站建设
  • 天津北京网站建设公司哪家好网站建设宣传视频教程
  • 鹤峰网站制作网站怎么做一盘优化排名
  • 广州门户网站开发无极电影网免费完整播放电视剧
  • 手机购物网站建设做空机构的网站
  • 迅睿cms建站教程html5手机端模板
  • 团购网站 如何做推广北京赛车网站建设
  • 免费棋牌网站建设中交路桥建设有限公司是国企还是央企
  • wordpress一小时建站公司营销型网站公司
  • 岳阳市内从事网站建设的公司网站建设和维护一年的费用
  • 手机网站大全网站设计公司列表
  • 什么网站可以做报名系统按效果付费的推广
  • 怎么创建自己网站平台个人网站 备案 备注
  • 成品型网站建设西咸新区建设环保网站