您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Spring Boot远程shell中将参数和选项传递给自定义远程shell命令?

如何在Spring Boot远程shell中将参数和选项传递给自定义远程shell命令?

我认为您不能在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
Java 2022/1/1 18:17:56 有644人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶