2016-05-10 10 views
1

私は春に作業クラスを持っています。私は、ハードコードされた文字列を、依存性注入を使用して設定マップで置き換えようとしました。 confにマップを提供依存性注入を使用して複数の設定クラスを結ぶ

@Configuration 
@Component 
public class BwlConfiguration { 

    @Resource(name="loadParameters") 
    private Map<ConfigEnum, String> conf; 

    private String address; 

    public BwlConfiguration() { 
     address = conf.get(SPI_BL); 
    } 
... 
} 

クラス:ENVマップを提供

@Configuration 
@Component 
public class ConfigLoader { 

    @Resource(name="returnEnv") 
    private Map<String, String> env; 

    @Bean 
    public Map<ConfigEnum, String> loadParameters() throws ParameterNotSetException{ 
     .... 
     return parameterMap; 
    } 

クラス:私はプログラムを実行すると

@Configuration 
public class EnvConf { 


    @Bean 
    public Map<String, String> returnEnv(){ 
     return System.getenv(); 
    } 
} 

、NullPointerExceptionがaddress = conf.get(SPI_BL);ラインでスローされます。私は@Component@Import(...class)に置き換えようとしましたが、同じ結果となってしまいます。 これらの注釈を間違って使用していますか?おかげ

+0

Import' @; 'BwlConfiguration'、または' ConfigLoader'と 'EnvConf'の中で?いずれのクラスからも '@ Component'を削除しないでください。 '@Import({ConfigLoader.class、EnvConf.class})'を 'BwlConfiguration'に追加してください。 – Jesper

+0

提案ありがとうございますが、結果は同じですが、まだNullPointerです。 – Wlad

+0

@Jesperなぜ '@ Configuration'に' @ Component'が必要ですか? –

答えて

0

は、私はBwlConfigurationにコンストラクタを置き換え:どこComponent` @ ``で置き換えた

@Bean 
public String address(){ 
    return conf.get(SPI_BL); 
} 
関連する問題