我认为您不能在Remote Shell命令中注入bean。
但是,您可以将InvocationContext注入到方法中,并使用它从上下文中检索spring托管的bean:
@Usage('Example using spring.beanfactory')
@Command
def mycommand(InvocationContext context, ...) {
beanfactory beans = context.attributes['spring.beanfactory']
YourBean bean = beans.getBean(YourBean.class);
...
}
package commands
import org.crsh.cli.Command
import org.crsh.cli.Usage
import org.crsh.command.InvocationContext
import org.springframework.beans.factory.beanfactory
import com.alexbt.goodies.MyBean
class SayMessage {
String message;
SayMessage(){
this.message = "Hello";
}
@Usage("Default command")
@Command
def main(InvocationContext context, @Usage("A Parameter") @Option(names=["p","param"]) String param) {
beanfactory beanfactory = (beanfactory) context.getAttributes().get("spring.beanfactory");
MyBean bean = beanfactory.getBean(MyBean.class);
return message + " " + bean.getValue() + " " + param;
}
@Usage("Hi subcommand")
@Command
def hi(InvocationContext context, @Usage("A Parameter") @Option(names=["p","param"]) String param) {
beanfactory beanfactory = (beanfactory) context.getAttributes().get("spring.beanfactory");
MyBean bean = beanfactory.getBean(MyBean.class);
return "Hi " + bean.getValue() + " " + param;
}
}
> saymsg -p Johnny
> Hello my friend Johnny
> saymsg hi -p Johnny
> Hi my friend Johnny