2011-05-31 5 views
1

Springでデプロイメント設定を制御するために人々が開発した戦略はありますか?環境の詳細(例:jdbc接続パラメータ)をプロパティファイルに抽出しましたが、単純な文字列ではない展開の詳細を管理する方法を探しています。具体的には、私は現在開発中にローカルに設定されたデータソースを使用しており、アプリケーションサーバ(DEV、QA)にはJNDIを使用しています。Springでデプロイメント固有の設定を管理する

私は、次の2行で

applicationContext.xmlをを持っていると私は、そのインスタンスで使用されていない方のデータソースコメントアウト。しかし、これを行うためのより良い方法があるはずです。思考、アイデア、提案?

+0

チェックアウトhttp://stackoverflow.com/questions/5967405/handling-of-configuration-files-in-j2ee-web-applicationsは、多分あなたは、いくつかのアイデアを得ます。 – abalogh

答えて

2

@Beanを使用して、データソースをXMLではなくコードで定義します。こうすることで、Beanの作成方法に条件付きのロジックを適用できます。たとえば:

@Value("${url:jdbc:hsqldb:mem:memdb}") 
    String url; 

    // username, password, etc 

    @Value("${jndiName:}") 
    String jndiName; 

    @Bean 
    public DataSource dataSource() { 
    DataSource ds; 

    if (jndiName == "") { 
     BasicDataSource bds = new BasicDataSource(); 
     bds.setDriverClassName(driverClassName); 
     bds.setUrl(url); 
     bds.setUsername(username); 
     bds.setPassword(password); 
     ds = bds; 
    } else { 
     JndiObjectFactoryBean = jndiFactory = new JndiObjectFactoryBean(); 
     jndiFactory.setJndiName("java:/" + jndiName); 
     jndiFactory.afterPropertiesSet(); 
     ds = (DataSource) jndiFactory.getObject(); 
    } 
    return ds; 
    } 
+0

私はこのアプローチが好きです。私は、 "target_environment = qa | dev | prod |"というプロパティファイルにプロパティを持つような何かをする可能性がありますこれらの設定に基づいて@Bean注釈付きメソッドが異なる応答を返すようにします。 – Fil

+0

はい、JVMの起動時にシステムプロパティとして-Denvironment = xxxを設定します。 – sourcedelica

関連する問題