0

こんにちはみんな私を助けることができます。私は現在、マルチスレッド アプリケーションで使用する必要があるサービス クラスを持っています。私が使用しているフォーマット クラスを、Spring IOC を使用してスレッド セーフにするのを手伝ってくれる人はいますか。

ここにコードスニペットがあります

@Configuration
@EnableTransactionManagement(mode=AdviceMode.ASPECTJ)
public class MyConfig
{
    ...
    @Bean
    public DateFormat dateFormatMMddyyyy()
    {
        return new SimpleDateFormat("MM/dd/yyyy");
    }
   ...
}

@Component("myServiceComponent")
public class MyServiceComponent5
{
   @Autowired 
   private DateFormat dateFormatMMddyyyy; //HEY Fix Me!!

   ...

   public void sampleProcess(Date date)
   {

   String formatedDate = dateFormatMMddyyyy.format(date);

   // do usefull stuffn here

   }
}

@Service("MyService")
{
   @Autowired
   private MyServiceComponent5 myServiceComponent5;

   public doMultiThreadProcess(Date date)
   {
      // not sure how to do this yet and probably gona ask on a different thread. =\
      // Currently more concern on how to set up MyServiceComponent5
      ...
      myServiceComponent5.sampleProcess(date);
      ...
   }

}

私が何か間違ったことをしているなら、誰でもコメントできますか。最近、 Number/DateFormat クラスはスレッドセーフではないことを読んだので、メソッド内に配置するか、 threadlocal を使用する必要があります。2番目のオプション(春の方法)を使用できるように、クラスを変更するのを手伝ってくれる人はいますか。

ところで、説明や追加情報が必要な場合は、お知らせください。また、デザインについてのコメントもお待ちしております。

コードは単なるサンプルですが、私が現在行っていることを説明していることに注意してください。また、現在の問題に関係がある場合、これはデスクトップ アプリケーションに使用されます。

使用されるフレームワークは、Spring 3.1、Java 7、および休止状態になります。

最後に、事前に感謝します。コード スニペットは大歓迎です。

4

2 に答える 2

2

日付フォーマットのニーズに関する限り、JODAにはスレッドセーフな日付/時刻フォーマッターがあります。このライブラリは、Spring MVC でもデフォルトでサポートされています。

この 1 行の構成で、@NumberFormat および @DateTimeFormat アノテーションのサポートを含む、Numbers および Date タイプのデフォルトのフォーマッターがインストールされます。Joda Time がクラスパスに存在する場合、Joda Time フォーマット ライブラリの完全なサポートもインストールされます。

ソース

于 2012-04-18T05:42:57.183 に答える