zoukankan      html  css  js  c++  java
  • SAP BOPF和Spring框架里加了注解的控制器是如何被调用的

    BOPF的这些determination,其方法不需要application developer自己去调用,而是被BOPF框架通过调用interface method的方式被调用。
    Spring MVC的@RequestMapping工作原理类似,但实现方式稍稍高级点,用的是Java的反射。

    ProductPageController这个类的productDetail方法加上了@RequestMapping, 参数是:

    当我点了product list上某个product的image想进入detail page时:

    这个包含了p的url就会被Spring MVCdelegate到我通过@RequestMapping注册的controller class上。从debugger里能看出我的controller class已经被成功地determine出来了。所以从本质上讲,@RequestMapping和在ABAP里常用的把CLAS名字配到表里的方法其目的都一样:注册,只是Annotation更加优雅和简便一点而已。

    扫描原理见我博客:
    A simulation of Java Spring dependency injection annotation @Inject in ABAP.
    How does component-scan work in Spring Framework
    How does @Autowired work in Spring framework
    要执行的方法名字在这:

    最后这个方法通过反射在line 497行被调用。

    Java和ABAP反射机制的区别

    注意在Java里,每个类的每个方法的元数据都可以被sun.reflect.MethodAccessor的一个实例来描述,而ABAP里反射的granularity只到Class level,只有CL_ABAP_CLASSDESCR,没有CL_ABAP_CLASS_METHODDESCR!

    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  • 相关阅读:
    mysql 分页查询的优化
    将某盘下所有文件名存在一个文件下面
    java 时间处理经典案例
    完整的发邮件并且生成测试报告的例子
    python 定时任务的执行
    打飞机游戏第一天,诸神归位
    数据库中插入几百万条数据
    面向对象的总结
    Python关于文件操作的总结
    python自动化,自动登录并且添加一个门店
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/12388889.html
Copyright © 2011-2022 走看看