2012-01-27 3 views
2

JavaアノテーションベースのSpring Webアプリケーションを使用しながら、プロパティーソースの処理をカスタマイズしたいと考えています。Javaアノテーションベースのコンフィグレーションの@PropertyResourceハンドリング動作をカスタマイズする

@Configuration 
@PropertySource("ldap.properties") 
@Repository 
public class LdapDao { 
... 
    @Autowired 
    public void setEnv(Environment env) throws NamingException { 
    this.url = env.getProperty("url").trim(); 
    this.user = env.getProperty("user").trim(); 
    this.password = env.getProperty("password).trim(); 

    this.initializeLdapContext(); 
    } 
... 
} 

この場合、springはクラスパス上のプロパティソースを探します。プロパティソースは次のように宣言されている場合:

@PropertySource("file:/${conf.dir}/ldap.properties") 

ldap.propertiesシステムのプロパティ「conf.dir」で指定したディレクトリの下に検索されます。

システムプロパティ "conf.dir"で指定されたディレクトリの下で、プロパティリソースが最初に検索される動作が必要です。そこに見つからなければ、その場所はデフォルトでclasspathになります。

この動作を実現する方法についてのご意見はありますか?

答えて

3

使用あなただけのあなたpropConfigコードに追加し、最後の1を取得します

@PropertySource({"ldap.properties", "file:/${conf.dir}/ldap.properties"}) 

この

PropertySourcesPlaceholderConfigurer propConfig = new PropertySourcesPlaceholderConfigurer(); 
//..... 
propConfig.setIgnoreResourceNotFound(true); 
propConfig.setIgnoreUnresolvablePlaceholders(false); 
propConfig.setLocalOverride(true); 
//.... 
関連する問題