我认为您不能在Remote Shell命令中注入bean。
但是,您可以将InvocationContext注入到方法中,并使用它从上下文中检索spring托管的bean:
@Usage('Example using spring.beanfactory')@Commanddef mycommand(InvocationContext context, ...) { BeanFactory beans = context.attributes['spring.beanfactory'] YourBean bean = beans.getBean(YourBean.class); ...}一个对我有用的完整示例:
package commandsimport org.crsh.cli.Commandimport org.crsh.cli.Usageimport org.crsh.command.InvocationContextimport org.springframework.beans.factory.BeanFactoryimport com.alexbt.goodies.MyBeanclass 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


