SAP BOPF和Spring框架里加了注解的控制器是如何被调用的_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > SAP BOPF和Spring框架里加了注解的控制器是如何被调用的

SAP BOPF和Spring框架里加了注解的控制器是如何被调用的

 2020/6/24 15:13:08  JerryWang_SAP  程序员俱乐部  我要评论(0)
  • 摘要:BOPF的这些determination,其方法不需要applicationdeveloper自己去调用,而是被BOPF框架通过调用interfacemethod的方式被调用。SpringMVC的@RequestMapping工作原理类似,但实现方式稍稍高级点,用的是Java的反射。ProductPageController这个类的productDetail方法加上了@RequestMapping,参数是
  • 标签:Spring 注解 SAP

BOPF的这些determination,其方法不需要application developer自己去调用,而是被BOPF框架通过调用interface method的方式被调用。

Spring MVC的@RequestMapping工作原理类似,但实现方式稍稍高级点,用的是Java的反射。

class="origin_image zh-lightbox-thumb lazy" width="1837" alt="" style="display: block; max-width: 100%; margin: 0px auto; cursor: zoom-in; background-color: transparent;" src="/Upload/Images/2020062415/60C5760FD4DE798A.jpg">

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!

发表评论
用户名: 匿名