0

我有一个类,它从这个 application.properties 中读取一些属性,并将它们作为配置属性添加到 java/spring 应用程序中。我现在想要实现的是:我确实将包交付给客户端,并且在这个 application.properties 中有数据库连接详细信息,因此客户端可以更改它们。问题是,这是否可以在我们创建 .war 文件之后的阶段完成。因此,基本上客户端会更改配置文件,并在部署时使用这些配置,或者必须在构建 .war 文件之前完成。附上你会看到我的解决方案:

//application.properties

#DB properties:
db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
db.url=jdbc:sqlserver://ip\\instance:port;databaseName=db_name
db.username=db_username
db.password=db_pass

//WebConfig.java

@Configuration

@PropertySource("classpath:application.properties")
public class WebAppConfig {

private static final String PROPERTY_NAME_DATABASE_DRIVER = "db.driver";
private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";
private static final String PROPERTY_NAME_DATABASE_URL = "db.url";
private static final String PROPERTY_NAME_DATABASE_USERNAME = "db.username";

@Resource
private Environment env;

@Bean
public DataSource dataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();

    dataSource.setDriverClassName(env.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER));
    dataSource.setUrl(env.getRequiredProperty(PROPERTY_NAME_DATABASE_URL));
    dataSource.setUsername(env.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME));
    dataSource.setPassword(env.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD));

    return dataSource;
}
4

4 回答 4

0

与其打包application.properties,不如将其作为外部引用文件,例如:

@PropertySource("file:/external/path/to/application.properties")

这将允许客户在不修改打包发行版的情况下更改文件。

于 2013-08-20T12:38:59.127 回答
0

您可以将您的连接信息放在您的服务器(tomcat、jboss 或其他)中。有特定的文件可以做到这一点(例如在 tomcat 中是 context.xml 文件)。

之后,您可以使用数据源在应用程序中使用此信息。因此,当war文件部署在服务器上时,连接信息是已知的。

于 2013-08-20T12:15:06.710 回答
0

通常的方法是使用JNDI。它是一种目录(查找)服务,专门设计用于为打包的 Java EE 应用程序提供数据库连接、属性和其他运行时配置数据。

于 2013-08-20T12:09:38.530 回答
0

通用类路径方式

在大多数 servlet 容器中,都有一个公共文件夹,您可以在其中存储所有 Web 应用程序可用的类路径资源。您可以将此文件夹用于配置目的。将您的构建过程更改为不包含application.properties在最终的战争文件中。例如,您可以为此类配置文件准备另一个 maven 项目。application.properties在您的部署文档中提供一份副本。在部署期间,您需要application.properties根据您的环境调整提供的文件中的属性,然后将其放置在所有 Web 应用程序通用的文件夹中。对于 Tomcat,它是$CATALINA_HOME/lib文件夹。在开发过程中,您可以通过启动配置将包含此属性文件的文件夹添加到服务器类路径。不利的一面是,您可能会在使用相同方法的两个 web 应用程序之间发生命名冲突(两个application.properties文件)。

于 2013-08-20T13:09:38.897 回答