2016-11-30 8 views
3

私は春@valueはIntergerプロパティ値

@Component 
@PropertySource("classpath:mail.properties") 
public class Mail { 

    @Value("${email.config.host}") 
    private String host; 

    @Value("${email.config.port}") 
    private Integer port; 

    @Value("${email.config.username}") 
    private String username; 
} 

メールサービスの設定のためのコンポーネントを>>作成していますが認識されませんそして、私のmail.propertiesファイルは次のようになります私のポートの値を取得しますが、私ははい、私はこれは整数値である必要があります知っているが、私の問題>

java.lang.NumberFormatException: For input string: "${email.config.port}" 

を得します@Valueアノテーションは**をStringに変換します。だから私はこれを試しました:

@Value("#{ T(java.lang.Integer).parseInt('${email.config.port}')}") 

...同じものを得ました。

ホスト、ユーザー名、パスワードなどが正常にロードされました。 ポートの値を取得するにはどうすればよいですか? PropertySourceがこのパラメータを自動的に変換しなかったのはなぜですか?

+0

なぜ@PropertySource( "classpath:mail.properties") 'がそこに属していると思いますか? –

+0

これで 'parseInt( '$ {email.port}')'を試しましたか?どうして?つまり、プロパティの名前は 'email.config.port'であり、' email.port'ではありません。 – Andreas

+0

Yeap! $ {email.config.port}を設定しているエラーが発生しました。ごめんなさい ! – davidwillianx

答えて

-1

外部化された値で作業するには、@Configurationアノテーションを追加します。

+0

動作しません。 – davidwillianx

1

文字列が整数を表す場合、Springはそのような値を文字列から整数に変換できます。

しかし、春がプロパティでプロパティを見つけることができない場合は、その値を(欠落した)キーに設定します。そして、これは解析可能な数字ではない文字列になります。

したがって、Springがemail.config.portプロパティを見つけることができない可能性があります。これを証明するには、@Value("${email.config.port}")と注釈されたStringフィールドを購入してください。

+0

私の最初の回答で設定されたSr.間違った@Valueパラメータを投稿しました。私は今この事を変えるつもりです。その事実は、正しいパラメータ(キー)はこれを動作させないということです。 – davidwillianx

+0

@ davidwillianx:提案されたStringベースのテストを試しましたか? – Ralph

+0

ポート変数を文字列として設定することを意味しますか?この値をフレームワーク設定オブジェクトに設定するにはどうすればいいですか?intを許可するだけです。 – davidwillianx

関連する問題