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 に答える