春季注入式反射方法调用

时间:2020-05-15 05:57:18

标签: java spring spring-boot spring-mvc reflection

我正在尝试(在一定程度上)复制Spring Rest Controllers和Spring @Bean方法中发现的方法级注入功能。这些注释增加了对Spring-context和request-context参数的支持,以解决调用问题。

以以下两个示例为参考:

// A Spring Rest Controller
@PutMapping(value = "/{id}")
@ResponseStatus(HttpStatus.OK)
public void update(@PathVariable( "id" ) Long id, @RequestBody Foo resource) {
    // both `id` and `resource` are injected based on the request context
}
// Configuration Class
@Bean
public AnObject anObject(AnotherBean anotherBean) {
    // `anotherBean` is injected from the Spring Application Context
}

我想以一种或另一种方式扩展此功能,以创建自己的方法注入。看起来类似于以下内容:

@Command
String command(AnObject springApplicationContextObject, int invocationSpecificObject) {
   ...
   return "output"
}

{
   MyInvocationThing invoker;
   Method commandMethod;
   output = invoker.invoke(commandMethod)
}

Spring是否提供任何灵活的扩展点来实现这种机制?我已经找了好久没有运气了。


注意:使用ApplciationContext::getBean方法可以很容易地天真地解析参数,但是不包括对诸如@Qualifier@Resource之类的参数级注释的支持。

非常感谢您的帮助。

0 个答案:

没有答案