2016-06-14 6 views
0

.propertiesファイルの値を使用する際に問題があります。静的プロパティ値を注入する

マイmy-properties.propertiesファイルは次のようになります。

email.host=smtp.googlemail.com 
email.port=465 

その後、私の設定ファイルは次のようになります。

@Configuration 
@PropertySource("classpath:my-properties.properties") 
class MyProperties{ 

    @Bean 
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer(){ 
     return new PropertySourcesPlaceholderConfigurer(); 
    } 

} 

そして私は、この電子メールのクラスでそれを使用しようとしている:

@Component("MyProperties.class") 
public class AutomatedEmail { 

private String recipient; 
private String fullName; 
private String tempPassword; 

private Email email; 

@Value("email.from") 
private String from; 

... 

public AutomatedEmail(){ 
} 
public AutomatedEmail(final String recipient, final String fullName, final String tempPassword) throws EmailException { 
    this.recipient = recipient; 
    this.fullName = fullName; 
    this.tempPassword = tempPassword; 

} 

しかし、常にnullを返すように戻ってきます。また、Autowiredアプローチを試してみましたが、MyPropertiesクラスの電子メールオブジェクト全体を設定しましたが、コンストラクターを呼び出すとnullになります。

答えて

2

プロパティファイル内の名前を中括弧記号で春の表情を作る。

@Value("${email.from}") 

this tutorial on spring values

エディットの詳細情報があります:Beanがインスタンス化され、春のコンテナによって管理されている場合にのみ動作することに注意してください。 new Email();を呼び出すだけでは、Beanに値を挿入することはできません。

より良い理解を得るために、bean IoCの春のドキュメンテーションを読んでください。さらに詳しい情報はhow to instantiate beans.

+0

ありがとうございます!私はこれを修正し、 'my-properties.properties'には使用されている値が表示されます。しかし、私はまだコンストラクタを呼び出すと値がnullになるという問題にぶち当たっています。私が推測しているAutomatedEmailオブジェクトを作成すると、値がコンパイル時に割り当てられ、上書きされますか? – John

+1

ああ、私はあなたがやっていることを参照してください! BeanはSpringを通じて管理する必要があります。 'new'キーワードを使ってそれをインスタンス化することはできません。私は私の答えを更新します。 – AndyN

+0

ありがとうございました!間違いなくもっと読書とリファクタリングが必要です! – John

関連する問題