有许多方法可以将参数传递给Java应用程序。其中包括:
arguments
properties-style)
-D选项传递)
在思想上,人们应该什么时候选择反对其他人呢?例如,如果要传递给应用程序的参数很多,那么是否有理由支持命令行参数而不是*.properties文件?
例如,可以轻松地从堆栈深处的任何类访问系统变量(相对于只能在main中访问的CLI )。与CLI相比,人们是否更喜欢使用系统属性,这仅仅是因为访问比较容易?
发布于 2012-05-21 14:28:53
取决于部署需要回答其中的一些问题。
命令行params:当您有其他进程生成应用程序并且希望从调用进程中控制这些参数时,这是很好的。克伦产卵就是一个例子。
文件:我不喜欢ini风格.你被困在Windows上了。如果您想要一些非常简单的内容,可以使用Properties类加载.properties文件。或者您可以使用XML。文件还为您提供了文件位置的选择,相对于应用程序部署而言,这是很好的选择,而且有些人还喜欢将它们抛到像/etc这样的全局位置。
环境变量:这些变量有各自的位置,尽管它使部署变得更加复杂。只有当环境影响应用程序的参数时,我才会使用它。也就是说,您的应用程序将采取不同的操作,或者需要根据操作系统、机器等进行不同的配置。
偏好是主观的,取决于应用程序的类型、部署、系统等。
发布于 2012-05-21 14:46:16
嗯,关于配置,每个程序员都有自己的想法,如何做正确的方法.和往常一样,它取决于很多事情。
我用这种方式来处理这个选择:如果它类似于环境变量(类似于$PATH或$SHELL),并且可以/必须由调用方(另一个程序或启动脚本)设置,则它通过-D开关直接进入System.Properties。
如果它是其他的东西,那么它就直接进入属性文件(实际上它的加载方式并不是很重要,有几种方法可以做到,每一种方法都有优缺点,我的fav是从类路径加载的,但只是一个品味问题)。
我试着在System.Properties中保持最小,非常重要的东西,如果它是一个大配置,更好地使用属性或XML,甚至更好的数据库表,但同样地,它取决于您的应用程序的复杂性(带有DB的HelloWorld显然过高了^^)。
https://stackoverflow.com/questions/10686963
复制相似问题