【问题标题】:Best way to store database info externally in spring MVC app在 Spring MVC 应用程序中外部存储数据库信息的最佳方式
【发布时间】:2017-11-07 13:13:00
【问题描述】:

我希望将我的 Web 应用程序分发给我工作的公司的许多不同部门,我想知道允许每个部署提供自己的数据库实例的最佳方式是什么。我正在使用 Hibernate,第一次部署实际上创建了数据库并在其中导入了大量数据,但我正在寻找允许用户指定自己的数据库 URL 和凭据的最干净、最可靠的方法。目前我的代码有数据库信息的硬编码参考:

public DataSource dataSource() 
{
    ComboPooledDataSource dataSource = new ComboPooledDataSource();
    try
    {
        dataSource.setDriverClass("net.sourceforge.jtds.jdbc.Driver");
        String hostName = InetAddress.getLocalHost().getHostName();
        dataSource.setJdbcUrl("jdbc:jtds:sqlserver://localhost:1433/MDHIS;InstanceName=ADT;sendUnicode=false");
        dataSource.setUser("sa");
        dataSource.setPassword("N0tY0urBu$1nes$");
    }
    catch (Exception ignored) {}
    return dataSource;
}

我在网上读到,您无法使用 Web 应用程序的相对路径轻松读取配置文件(无论如何请粉碎这个神话,如果它是一个),所以我正在考虑使用环境变量。我希望它是完全可移植的,并且可以在 Ubuntu 和 Windows 上运行,所以不确定它的效果如何。我正在使用 100% 基于注释的方法,因此没有任何 XML 文件,我打算保持这种状态。

有什么建议吗?

谢谢!

【问题讨论】:

  • 使用 spring Boot application.property 文件
  • 我目前并没有真正使用 Spring Boot,但如果集成起来不是太疯狂,我可以随时看看。
  • 感谢您为我指明了正确的方向!请参阅我选择的解决方案的答案:)。

标签: java spring hibernate file config


【解决方案1】:

感谢您的帮助,我最终用以下方式注释了我的配置类:

@PropertySource("classpath:config.properties")

然后我将所述文件放在作为类路径基础的 java 文件夹中。我把它放在文件中:

dbUrl=jdbc:jtds:sqlserver://localhost:1433/MDHIS;InstanceName=ADT;sendUnicode=false

我现在可以通过以下方式访问代码中的信息:

dataSource.setJdbcUrl(environment.getProperty("dbUrl"));

Environment 是一个在我的 Hibernate 配置类中自动装配的依赖项。

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多