Java ダブルプリミティブ用の Spring Bean を作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/59850

  •  09-06-2019
  •  | 
  •  

質問

double の値を保持する Spring Bean を作成したいと思います。何かのようなもの:

<bean id="doubleValue" value="3.7"/>
役に立ちましたか?

解決

次のように宣言します。

<bean id="doubleValue" class="java.lang.Double">
   <constructor-arg index="0" value="3.7"/>
</bean>

そして次のように使用します:

<bean id="someOtherBean" ...>
   <property name="value" ref="doubleValue"/>
</bean>

他のヒント

ニーズによっては、独自の Bean を定義することが最善策ではない可能性があることにも注意してください。

<util:constant static-field="org.example.Constants.FOO"/>

これはクラスに格納されている定数値にアクセスするための良い方法であり、デフォルトのバインダーも変換に非常にうまく機能します。

<bean class="Foo" p:doubleValue="123.00"/>

私は、(再利用目的で) 値を定義するプロパティ ファイルと組み合わせて、多くの Bean をこの方法で置き換えていることに気づきました。以前はこのように見えていたもの

<bean id="d1" class="java.lang.Double">
  <constructor-arg value="3.7"/>
</bean>
<bean id="foo" class="Foo">
  <property name="doubleVal" ref="d1"/>
</bean>

これはリファクタリングされます:

<bean
  id="propertyFile"
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
  p:location="classpath:my.properties"
/>
<bean id="foo" class="Foo" p:doubleVal="${d1}"/>

を使用しないのはなぜですか ダブル?何らかの理由?

スプリング 2.5+

Java 構成では次のように Bean を定義できます。

@Configuration
public class BeanConfig {
    @Bean
    public Double doubleBean(){
        return  new Double(3.7);
    }
}

この Bean はプログラム内で次のように使用できます。

@Autowired
Double doubleBean;

public void printDouble(){
    System.out.println(doubleBean); //sample usage
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top