我将开始设计一个控制台应用程序。这意味着像MySQL客户端一样,它会提示用户输入命令然后执行它们(基本上是打开和监听TCP端口,管理一些基本的数据库操作和服务器管理的东西)。应用程序基本上接受连接并将数据返回给客户端。
我希望这个应用程序在GUI和控制台模式下运行,具体取决于应用程序的启动方式(这里没问题)
GUI不是问题,而是控制台。 我需要的是一种定义一组命令的方法,它们可能有或没有任何数量的参数。此命令可能会提示确认,密码或返回一组数据。 我希望保持优雅,可维护并避免构建可能失控的“有限状态机”。
我希望实现以下目标:
[ready]> server:start;
Server started.
[running]> connections:list;
Conn IP Port
Name1 192.168.2.2 60000
Name2 192.168.2.4 60002
[running]> connections:close Name1;
1 connection closed.
[running]> server:stop;
password? ******
Server stopped.
[ready]>
是否有任何框架,工具或技术可以在Java上实现这一目标?
答案 0 :(得分:4)
最近(最近)发布了Spring Shell。这是Spring用来为他们的Roo外壳减去Roo部件的动力。您可以将自己的命令插入其中,并利用其记录脚本,回放脚本,获取参数,更改提示等的能力。
我查看了随附的示例,它有四个不同的类添加或更改了各种各样的东西,它看起来非常简单。
答案 1 :(得分:2)
我过去使用clamshell-cli,没有做过任何太复杂的事情,但似乎它有很多功能。
答案 2 :(得分:1)
答案 3 :(得分:0)
实现这一目标的一种方法是通过反思。
您可以定义字段server
和connections
,并为其提供所需的方法(start() stop() close()
)。然后在解析输入时,使用反射机制来执行您需要的方法。