1
incompatible 2015-07-09 17:07:03 +08:00
流行的做法是写在配置文件里,在代码中读取配置文件获得配置
打包时使用maven把配置文件打到jar包或者war包中。 你隔壁的硬编码然后打成jar包我觉得也没什么问题。需要改配置时,在版本控制里改好,然后打出新的jar包重新上线就行了。 如果硬要说有什么缺点,那就是这种情况下没法在生产环境里改配置文件,因为包含配置的代码已经被编译成class了,你没法用文本编辑器直接改。 |
2
crazyxin1988 2015-07-09 17:10:35 +08:00
一般都是写到配置文件中吧
而且 开发,测试,生产环境都有特定的配置文件 这样 项目启动时直接加载环境中的配置就好了啊 |
3
djchurch007 OP @incompatible
@crazyxin1988 嗯,他们是有分多个配置文件,我只是不能理解生产环境的配置文件也交由svn控制 1. 这样不是每个开发人员都知道线上服务器的账号密码了 2. 如果以后改了账号密码,是不是要整个项目重新打包? |
4
crazyxin1988 2015-07-09 17:22:11 +08:00
@djchurch007
生产环境的那份配置 是在自动化部署平台控制的。。。。为啥交给svn |
5
incompatible 2015-07-09 17:24:26 +08:00
@djchurch007 开发人员知道线上数据库密码无所谓啊
运维或dba通常会给给线上数据库加白名单,只对应用服务器开放。 开发人员知道了密码也连不上 重新打包是对的。直接改线上配置是糟糕的主意。比如有多个应用服务器的情况,难道ssh到每一台上面改? |
6
djchurch007 OP @crazyxin1988 所以说生产环境的配置一般做法是不会让所有开发人员都看到的喽
|
7
yorkw 2015-07-09 18:00:24 +08:00
以Spring为例,标准写法是先加载运行环境里的配置文件,如/opt/myapp/config,如果失败再加载jar包里自带的。配置文件需要进SVN做版本控制,但一般配的都是开发环境的账号密码。随jar包发布只当作模版使用。
关于重新打包的问题要视具体项目而论,对于较大的项目来说,一般有标准的发布流程,如 mvn release:prepare mvn release:perform,要走一遍unit test,svn tag,etc. 还是比较耗时的(视项目规模)。而且大公司里程序员一般也不直接参与部署流程的,从制度上保证生产环境的安全性。 |
8
djchurch007 OP |
9
crazyxin1988 2015-07-09 18:11:53 +08:00
|
10
loading 2015-07-09 18:17:14 +08:00 via Android
从系统变量取
或者文件读取。 |
11
djchurch007 OP @yorkw 那如果出现了紧急问题,比如说光纤被挖断了,台风来了,需要紧急换个新的配置文件,也要走这么长的流程么
|
12
fwrq41251 2015-07-09 18:33:27 +08:00
一部分配置在项目的.propeties文件里。
一部分在数据库的表里。 数据库账号密码在应用服务器的配置里(一般开发没有机会接触生产环境的服务器)。 |
13
ipeony 2015-07-09 18:37:08 +08:00
数据源用JNDI,然后控制应用服务器访问权限
|
14
liuzhen 2015-07-09 23:18:41 +08:00
@crazyxin1988 自动化部署平台控制 与 交给svn并没有什么冲突啊
|
15
crazyxin1988 2015-07-09 23:21:57 +08:00
|
16
liuzhen 2015-07-09 23:34:20 +08:00
@crazyxin1988 自动化部署只管编译、打包、部署的事情,恕我愚昧~ 不明白跟配置文件的版本控制有什么冲突,难不成一个配置文件一百年不变化或者不增加或者删除配置项
|
17
crazyxin1988 2015-07-10 09:09:56 +08:00
|
18
liuzhen 2015-07-10 10:09:47 +08:00
@crazyxin1988 哦 环境不一样
|
19
djchurch007 OP |