首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

想请问各位大佬, springboot 是不是没办法做到用户自定义数据库账号密码?

  •  
  •   szvone · 172 天前 · 1552 次点击
    这是一个创建于 172 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是不是只有在编译前在配置文件设定好数据的账号密码?

    能不能做到类似 php 那样,可以写完一个程序后有一个初始化的过程,用户可以在网页上面自定义数据库的账号密码,然后程序去改写数据库的配置?

    如果可以请问有没有类似的教程

    30 回复  |  直到 2018-10-29 15:32:44 +08:00
        1
    limuyan44   172 天前 via Android
    可以的,搜一搜配置中心关键字
        2
    Cbdy   172 天前 via Android
    可以的,最简单的,比如做一个数据源的代理
        3
    ErrorMan   172 天前 via Android
    只是想对环境定制的话,Spring Boot 是可以在启动时从环境变量里读取配置。如果说想像 WordPress 那样在启动之后进行配置,可以用新配置生成一份新的配置文件,然后重启程序让 Spring Boot 以新的配置文件初始化
        4
    szvone   172 天前
    @Cbdy 不是很懂,有这方面的资料吗?
        5
    szvone   172 天前
    @ErrorMan 嗯这个我懂,大概就是生成一份配置文件来替换原有的,但是问题来了,springboot 打包后的是.war 的包,这种要怎么去替换原有的配置文件呢?
        6
    szvone   172 天前
    @limuyan44 可能您理解错我的意思了,您可以看三楼的回复,我是想要做一个,程序启动后,能够让用户自定义配置的程序,就比如我发布一个 war 包,用户只需要运行这个 war 包,就能够在网页里面配置数据库的账号密码,给任何一个用户都能用,而无需我用源码根据不同的用户的数据库密码编译对应的 war 包给他们用
        7
    aa6563679   172 天前 via iPhone
    @szvone 你打成 jar 包,然后把配置文件放到和 jar 包一个目录也能用的,不一定要打进 jar 包里。
    在网页里配置站号密码也能用这个方法做。写个配置到当前目录就行了。只是 Java 没有这习惯,没有现成的轮子
        8
    lhx2008   172 天前
    和 jar 包同目录的 config/property.conf 啥的优先级是比 jar 包里面的 conf 大的,所以你的安装程序在这里重建一个 conf 重启就 OK,至于有没有热部署就不太清楚了。或者楼主可以参考下有没有别人写的 Java 论坛博客怎么安装的
        9
    slixurd   172 天前
    那就不要用 XML/Annotation 配置数据库连接
    自己起个 Service 动态创建连接就好了,这个事情还是挺简单的吧
    看看数据库是怎么创建的就好了...
        10
    szvone   172 天前
    @slixurd 自己创建的话 还有个问题就是每次服务器重启配置会丢失
        11
    szvone   172 天前
    @lhx2008 感谢解答,想请问的是 springboot 默认支持这种配置模式吗?
        12
    szvone   172 天前
    @aa6563679 我目前就是尝试了用 txt 来保存,然后动态读取,想知道有没有更好的办法,比如去修改 yml 文件
        13
    serical   172 天前 via Android
    yml 没试过,不过 properties 是可以的,有个 ResourseBundle 搜下
        14
    ErrorMan   172 天前 via Android
    @szvone war 包不太清楚,jar 包可以使用启动参数来指定配置文件位置,或者楼上提到的配置优先级,war 部署以后会被解压,应该也支持吧。实在不行就自己写个配置类来读取新配置然后提交给 SpringBoot 容器。部署方面 Spring 的官方教程这方面介绍得很详细可以去看看
        15
    johnniang   172 天前 via Android
    启动的时候加上参数不就行了么 -Dspring.datasource...
        16
    nosky   171 天前 via Android
    建议参考一下 halo,一个 JAVA 开发的博客系统
        17
    AlkTTT   171 天前
    SpringCloud Config
        18
    szvone   171 天前
    @serical 百度了一下看到了资料,这个好像只能读取配置,但是不能修改
        19
    szvone   171 天前
    @ErrorMan 如果是通过 java -jar 的方式启动,这个包是不会解压的
        20
    szvone   171 天前
    @johnniang 知道端口号可以自定义启动配置,数据源也可以吗?
        21
    szvone   171 天前
    @AlkTTT 这个请参照我 6 楼的回复
        22
    johnniang   171 天前 via Android
    @szvone 都可以的,配置文件里面任何配置都是可以通过命令参数覆盖的
        23
    johnniang   171 天前 via Android
    @szvone 实际上就是添加环境变量而已
        24
    szvone   171 天前
    @nosky 查询了下源代码,他是使用了一个 H2 Database:嵌入式数据库,无需安装,是内置了数据库,并不是自定义了数据库
        25
    fumichael   171 天前
    打开 jar 包找到配置文件修改完再丢回去 jar 包的意思?或者你可以打成 war 包~~
        26
    szvone   171 天前
    @fumichael 就是现在 php 写的那种博客系统不是可以实现安装吗?首次进入的时候,会让用户填写数据库的账号密码等进行初始化,他原理就是有个 config 的文件,用户初始化的时候,程序会去修改这个文件,我想说的是 java 能不能实现类型的功能,我打包成 war 了 使用内置 Tomcat 运行的话,还是不会解压的
        27
    UndefinedDiary   171 天前
    我印象中 jira 是启动的时候页面配置数据库,,, 后面重启升级都是 OK 的,,应该跟楼主需求类似,,不知道有没有参考价值
        28
    gaius   171 天前
    gradle 可以写个 task,复制某路径下的*.properties 和*.xml 到 build 下的路径,可以替换 war 包的配置文件
        29
    fumichael   171 天前
    @szvone 看来是我理解错你的意思了,应该是可行的,只是我也没想到怎么做
        30
    ErrorMan   171 天前 via Android
    @szvone 呃,你不是用 war 方式部署的吗,war 方式会解压啊
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2370 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 15:38 · PVG 23:38 · LAX 08:38 · JFK 11:38
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1