0

次のようなクラスがあります。

Class Parser{
  private String fileName;
  Parser(String fileName){
    this.fileName = fileName;
  }
}

ここで、Springを使用してこのクラスをインスタンス化したいのですが、問題は、fileNameここが定数ではないことです。これはFileToBeParsed_<ddMMyyyy>、ddMMyyyyが現在の日時(インスタンス化が発生するたび)である次の形式です。

だから私は正しいファイル名を生成するユーティリティメソッドを書くことを考えていましたが、コンストラクターにそれを注入するにはどうすればよいですか?

また、Spring構成でサードパーティ/ライブラリ/JDKクラスのBeanを作成することもお勧めします。

ありがとう

4

2 に答える 2

3

SimpleDateFormatterとnewDate()の解析を使用して、filenamePrefixを挿入し、コンストラクターに日付文字列を追加できます。

Parser(String fileNamePrefix){
    String fileNameSuffix;
    //determine fileName suffix using new date and formatter
    ...

    this.fileName = fileNamePrefix + fileNameSuffix;
}

または、コンストラクターでコーディングするというアイデアが気に入らない場合は、FileNameGeneratorクラスを作成し、xmlコンストラクター引数またはAutowiredアノテーションを使用してコンストラクターインジェクションを使用してそれをインジェクトでき​​ます。

@Autowired
Parser(FileNameGenerator fileNameGenerator){
    this.fileName = fileNameGenerator.getFileName();
}
于 2012-04-21T15:55:59.730 に答える
3

Spring ELをサポートするバージョンのSpringを使用しているとすると、これでうまくいくはずです。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean name="sdf" class="java.text.SimpleDateFormat">
        <constructor-arg value="yyyy/MM/dd" />
    </bean>

    <bean name="parser" class="sandbox.Parser">
        <constructor-arg value="#{sdf.format(new java.util.Date())}" />
    </bean>
</beans>
于 2012-04-21T15:58:27.170 に答える