Java配置存储选择

Java配置存储选择,java,xml,sqlite,ssh,properties,Java,Xml,Sqlite,Ssh,Properties,首先,我是新来的作家,但不是读者。我使用stackoverflow多年来发现了很多有用的信息,但现在我决定加入这个社区 现在我要问的是关于Java配置存储选择的问题 应用程序 目前我正在为自己做一个JavaFX项目。Java应用程序将在一些台式机上使用。该应用程序的目标是通过SSH(例如服务器)打开/关闭Linux设备 我想让用户能够添加5/10个设备,其中包含设备名称和IP、开机命令的SSH凭据以及关机命令用户、主机、密钥、端口、超时、命令的SSH凭据 将有一个JavaFXGUI,该GUI将有

首先,我是新来的作家,但不是读者。我使用stackoverflow多年来发现了很多有用的信息,但现在我决定加入这个社区

现在我要问的是关于Java配置存储选择的问题

应用程序 目前我正在为自己做一个JavaFX项目。Java应用程序将在一些台式机上使用。该应用程序的目标是通过SSH(例如服务器)打开/关闭Linux设备

我想让用户能够添加5/10个设备,其中包含设备名称和IP、开机命令的SSH凭据以及关机命令用户、主机、密钥、端口、超时、命令的SSH凭据

将有一个JavaFXGUI,该GUI将有一个菜单栏,其中包含一个名为设备的菜单,用于选择、添加、编辑或删除设备。在GUI的中心将有2个按钮,它们将用于电源开/关命令或开关

设计 编程语言是Java。 GUI基于JavaFX。 对于通电/断电命令,我使用命令设计模式。 存储 我尝试了不同的存储选项SQLite、属性和XML来存储设备的信息。但我没有发现在这种情况下哪个选项最合适

SQLite存储空间感觉太大,无法进行此操作

如果我选择单独的属性/XML存储,那么大约会有5/10个不同的属性/XML文件。应用程序还必须在这些文件之间切换

如果我决定使用多个属性文件,则文件的结构如下所示:

device.name = Server
device.host = host.com

power_on.key = /path/to/rsa
power_on.user = user
power_on.host = host.com
power_on.port = 22
power_on.timeout = 10000
power_on.command = execute power on command

power_off.key = /path/to/rsa
power_off.user = user
power_off.host = host.com
power_off.port = 22
power_off.timeout = 10000
power_off.command = execute power off command
    <device>
        <name>Server</name>
        <host>host.com</host>
        <commands>
            <powerOn>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power on command</command>
            </powerOn>
            <powerOff>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power off command</command>
            </powerOff>
        </commands>
    </device>
# Device 1
server.device.name = Server
server.device.host = host.com

server.power_on.key = /path/to/rsa
server.power_on.user = user
server.power_on.host = host.com
server.power_on.port = 22
server.power_on.timeout = 10000
server.power_on.command = execute power on command

server.power_off.key = /path/to/rsa
server.power_off.user = user
server.power_off.host = host.com
server.power_off.port = 22
server.power_off.timeout = 10000
server.power_off.command = execute power off command

# Device 2
pc.device.name = PC
pc.device.host = host.com

pc.power_on.key = /path/to/rsa
pc.power_on.user = user
pc.power_on.host = host.com
pc.power_on.port = 22
pc.power_on.timeout = 10000
pc.power_on.command = execute power on command

pc.power_off.key = /path/to/rsa
pc.power_off.user = user
pc.power_off.host = host.com
pc.power_off.port = 22
pc.power_off.timeout = 10000
pc.power_off.command = execute power off command
<devices>
    <device>
        <name>Server</name>
        <host>host.com</host>
        <commands>
            <powerOn>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power on command</command>
            </powerOn>
            <powerOff>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power off command</command>
            </powerOff>
        </commands>
    </device>
    <device>
        <name>PC</name>
        <host>host.com</host>
        <commands>
            <powerOn>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power on command</command>
            </powerOn>
            <powerOff>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power off command</command>
            </powerOff>
        </commands>
    </device>
</devices>
如果我决定使用多个XML文件,文件的结构将如下所示:

device.name = Server
device.host = host.com

power_on.key = /path/to/rsa
power_on.user = user
power_on.host = host.com
power_on.port = 22
power_on.timeout = 10000
power_on.command = execute power on command

power_off.key = /path/to/rsa
power_off.user = user
power_off.host = host.com
power_off.port = 22
power_off.timeout = 10000
power_off.command = execute power off command
    <device>
        <name>Server</name>
        <host>host.com</host>
        <commands>
            <powerOn>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power on command</command>
            </powerOn>
            <powerOff>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power off command</command>
            </powerOff>
        </commands>
    </device>
# Device 1
server.device.name = Server
server.device.host = host.com

server.power_on.key = /path/to/rsa
server.power_on.user = user
server.power_on.host = host.com
server.power_on.port = 22
server.power_on.timeout = 10000
server.power_on.command = execute power on command

server.power_off.key = /path/to/rsa
server.power_off.user = user
server.power_off.host = host.com
server.power_off.port = 22
server.power_off.timeout = 10000
server.power_off.command = execute power off command

# Device 2
pc.device.name = PC
pc.device.host = host.com

pc.power_on.key = /path/to/rsa
pc.power_on.user = user
pc.power_on.host = host.com
pc.power_on.port = 22
pc.power_on.timeout = 10000
pc.power_on.command = execute power on command

pc.power_off.key = /path/to/rsa
pc.power_off.user = user
pc.power_off.host = host.com
pc.power_off.port = 22
pc.power_off.timeout = 10000
pc.power_off.command = execute power off command
<devices>
    <device>
        <name>Server</name>
        <host>host.com</host>
        <commands>
            <powerOn>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power on command</command>
            </powerOn>
            <powerOff>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power off command</command>
            </powerOff>
        </commands>
    </device>
    <device>
        <name>PC</name>
        <host>host.com</host>
        <commands>
            <powerOn>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power on command</command>
            </powerOn>
            <powerOff>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power off command</command>
            </powerOff>
        </commands>
    </device>
</devices>
如果我决定使用一个XML文件,该文件的结构将如下所示:

device.name = Server
device.host = host.com

power_on.key = /path/to/rsa
power_on.user = user
power_on.host = host.com
power_on.port = 22
power_on.timeout = 10000
power_on.command = execute power on command

power_off.key = /path/to/rsa
power_off.user = user
power_off.host = host.com
power_off.port = 22
power_off.timeout = 10000
power_off.command = execute power off command
    <device>
        <name>Server</name>
        <host>host.com</host>
        <commands>
            <powerOn>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power on command</command>
            </powerOn>
            <powerOff>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power off command</command>
            </powerOff>
        </commands>
    </device>
# Device 1
server.device.name = Server
server.device.host = host.com

server.power_on.key = /path/to/rsa
server.power_on.user = user
server.power_on.host = host.com
server.power_on.port = 22
server.power_on.timeout = 10000
server.power_on.command = execute power on command

server.power_off.key = /path/to/rsa
server.power_off.user = user
server.power_off.host = host.com
server.power_off.port = 22
server.power_off.timeout = 10000
server.power_off.command = execute power off command

# Device 2
pc.device.name = PC
pc.device.host = host.com

pc.power_on.key = /path/to/rsa
pc.power_on.user = user
pc.power_on.host = host.com
pc.power_on.port = 22
pc.power_on.timeout = 10000
pc.power_on.command = execute power on command

pc.power_off.key = /path/to/rsa
pc.power_off.user = user
pc.power_off.host = host.com
pc.power_off.port = 22
pc.power_off.timeout = 10000
pc.power_off.command = execute power off command
<devices>
    <device>
        <name>Server</name>
        <host>host.com</host>
        <commands>
            <powerOn>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power on command</command>
            </powerOn>
            <powerOff>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power off command</command>
            </powerOff>
        </commands>
    </device>
    <device>
        <name>PC</name>
        <host>host.com</host>
        <commands>
            <powerOn>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power on command</command>
            </powerOn>
            <powerOff>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power off command</command>
            </powerOff>
        </commands>
    </device>
</devices>
问题 我的问题是,;哪种存储选择和/或设计模式最适合这种情况?这让我真的很困惑,因为我尝试了不同的东西,但没有任何好的解决办法


我希望你们能帮我解决这个问题。欢迎所有反馈、建议等。提前谢谢你

您有几种选择。正如您所提到的,属性文件是最简单的方法。不需要额外的库,一切都已经在JDK中了

然而,另一方面,如果你想要更多,你可以使用

亚马尔 JSON XML 完全习惯的东西
如果您的配置经常被手工编辑,我会反对XML。我个人的偏好是将配置存储在单个json文件中,每个设备都有自己的dict。json还具有良好的编辑器和工具支持。

感谢您分享您的知识!我熟悉JSON、XML和YAML。我在问题中又添加了一些代码示例。您是对的,只从一个文件读取也会更容易。无论如何,将设备存储在一个文件中是否明智?因为用户应该有机会选择、添加、编辑和删除设备。