2009-03-27 8 views

答えて

0

これはあなた自身に質問する必要がある質問です。 2つのスレッドが同じ DTOにアクセスする方法はありますか?私はどんな優しい建築でもないと思います。

Spring Beans自体は通常シングルトン(別途設定されていない場合)であり、スレッドセーフである必要があります。

すべてのBeanがパラメータとしてDTOを受け取った場合、新しく作成されたDTOを返すと、これらのBeanのすべてのクライアントが参照を保持しないため、DTOが問題になることはありません。少なくとも高レベルの観点から。

ただし、Javaの並行性については、読んでください。チャンスがあればGoetz's bookをお勧めします。

最後に、私はロッド・ジョンソン(バネソース・マスターマインド)がDTOが悪いと言っていたことを思い出します。 Googleの "DTO evil"に時間を割いて気をつけてください。

+0

私はDTOも迷惑であると思ったが、それは私のために選ばれたものだった。 – Martlark

+0

このSOの質問は、すでに "DTO悪"のgoogle(私にとっては、少なくとも)の2番目の結果です! –

4

要するに、はい。 Spring Beansは、多くの場合、複数のスレッドで共有できます。 Spring Beanのメンバ変数に特に注意してください。それらが変更可能な場合は、それらを不変にするか、ロック(例えば、同期)、ThreadLocalなどでアクセスを調整する。

+0

私のBeanがページを裏づけしていて、ページが2回開いた場合、Beanはページ間で共有されるか、各ページセッションごとに作成された新しいBeanですか?私は仕事に戻るときに実験しなければならないでしょう – Martlark

+0

広義に言えば、あなたのBeanが共有されているかどうか、そしてどのように共有されているかを判断する必要があります。私はこれが時々終わるよりも簡単だと分かっています。 –

+0

@Julien Chastang。おかげさま...私は思います。 – Martlark

関連する問題