我正在尝试(在一定程度上)复制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
之类的参数级注释的支持。
非常感谢您的帮助。