是不是只有在编译前在配置文件设定好数据的账号密码?
能不能做到类似 php 那样,可以写完一个程序后有一个初始化的过程,用户可以在网页上面自定义数据库的账号密码,然后程序去改写数据库的配置?
如果可以请问有没有类似的教程
1
limuyan44 2018-10-28 13:52:06 +08:00 via Android
可以的,搜一搜配置中心关键字
|
2
Cbdy 2018-10-28 14:09:10 +08:00 via Android
可以的,最简单的,比如做一个数据源的代理
|
3
ErrorMan 2018-10-28 14:45:05 +08:00 via Android
只是想对环境定制的话,Spring Boot 是可以在启动时从环境变量里读取配置。如果说想像 WordPress 那样在启动之后进行配置,可以用新配置生成一份新的配置文件,然后重启程序让 Spring Boot 以新的配置文件初始化
|
5
szvone OP @ErrorMan 嗯这个我懂,大概就是生成一份配置文件来替换原有的,但是问题来了,springboot 打包后的是.war 的包,这种要怎么去替换原有的配置文件呢?
|
6
szvone OP @limuyan44 可能您理解错我的意思了,您可以看三楼的回复,我是想要做一个,程序启动后,能够让用户自定义配置的程序,就比如我发布一个 war 包,用户只需要运行这个 war 包,就能够在网页里面配置数据库的账号密码,给任何一个用户都能用,而无需我用源码根据不同的用户的数据库密码编译对应的 war 包给他们用
|
7
aa6563679 2018-10-28 15:48:02 +08:00 via iPhone
@szvone 你打成 jar 包,然后把配置文件放到和 jar 包一个目录也能用的,不一定要打进 jar 包里。
在网页里配置站号密码也能用这个方法做。写个配置到当前目录就行了。只是 Java 没有这习惯,没有现成的轮子 |
8
lhx2008 2018-10-28 15:51:40 +08:00
和 jar 包同目录的 config/property.conf 啥的优先级是比 jar 包里面的 conf 大的,所以你的安装程序在这里重建一个 conf 重启就 OK,至于有没有热部署就不太清楚了。或者楼主可以参考下有没有别人写的 Java 论坛博客怎么安装的
|
9
slixurd 2018-10-28 15:55:27 +08:00
那就不要用 XML/Annotation 配置数据库连接
自己起个 Service 动态创建连接就好了,这个事情还是挺简单的吧 看看数据库是怎么创建的就好了... |
12
szvone OP @aa6563679 我目前就是尝试了用 txt 来保存,然后动态读取,想知道有没有更好的办法,比如去修改 yml 文件
|
13
serical 2018-10-28 20:09:18 +08:00 via Android
yml 没试过,不过 properties 是可以的,有个 ResourseBundle 搜下
|
14
ErrorMan 2018-10-28 20:42:56 +08:00 via Android
@szvone war 包不太清楚,jar 包可以使用启动参数来指定配置文件位置,或者楼上提到的配置优先级,war 部署以后会被解压,应该也支持吧。实在不行就自己写个配置类来读取新配置然后提交给 SpringBoot 容器。部署方面 Spring 的官方教程这方面介绍得很详细可以去看看
|
15
johnniang 2018-10-28 21:59:12 +08:00 via Android
启动的时候加上参数不就行了么 -Dspring.datasource...
|
16
nosky 2018-10-29 08:25:25 +08:00 via Android
建议参考一下 halo,一个 JAVA 开发的博客系统
|
17
AlkTTT 2018-10-29 08:31:21 +08:00
SpringCloud Config
|
24
szvone OP @nosky 查询了下源代码,他是使用了一个 H2 Database:嵌入式数据库,无需安装,是内置了数据库,并不是自定义了数据库
|
25
fumichael 2018-10-29 09:17:34 +08:00
打开 jar 包找到配置文件修改完再丢回去 jar 包的意思?或者你可以打成 war 包~~
|
26
szvone OP @fumichael 就是现在 php 写的那种博客系统不是可以实现安装吗?首次进入的时候,会让用户填写数据库的账号密码等进行初始化,他原理就是有个 config 的文件,用户初始化的时候,程序会去修改这个文件,我想说的是 java 能不能实现类型的功能,我打包成 war 了 使用内置 Tomcat 运行的话,还是不会解压的
|
27
UndefinedDiary 2018-10-29 09:31:49 +08:00
我印象中 jira 是启动的时候页面配置数据库,,, 后面重启升级都是 OK 的,,应该跟楼主需求类似,,不知道有没有参考价值
|
28
gaius 2018-10-29 09:37:11 +08:00
gradle 可以写个 task,复制某路径下的*.properties 和*.xml 到 build 下的路径,可以替换 war 包的配置文件
|