- PR -

Springについて

1
投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-04-17 20:01
こんにちは。

Springの仕組みについてお聞きしたいのですが、Springを使って、@DBから一度データを
取得した後、他ユーザ・管理者によってその対象データに変更があった場合、同じAction
をリロードし@を通っても、内容が更新されないと聞いたのですが、springの場合、何かしらのDIセッションが存在して、上記現象がおきるのでしょうか(Springのイニシャライズのタイミング?)?

また、そうした場合、どのように対応しておられるのでしょうか?(Listnerクラス?)
よろしくお願いします。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2008-04-18 15:04
情報の出元はどこでしょうか。

単にキャッシュされているだけのように思います。
あるいは、参照の持ち方がおかしいか。
再現できるミニマムコードを用意してみてください。

キャッシュなどがされず、DBからちゃんと値を取得しているのであれば
当然ながらDBから取得したデータは取得時点までの変更を反映したものとなります。
“Springだから”という理由でそのような挙動をすることはないはずです。
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-04-18 18:52
こんにちは。私の認識違いだったかもしれません(まだ、あいまいですが)。

どうやら、Springで指定できる scope="singleton"についてでした。
まだ、もやっとしか想像できていないのですが、Springのxmlファイルで記述する
<bean>タグでこのIDは常にアプリで一意に保持してくれるという事でした。
プロトタイプとシングルトンと定義があるので間違いはないと思うのですが・・。

そこで、もう一つ分からなくなってしまったのが。
Springの起動時にこのBean定義を全て一度取得するようですが、どうやって取得し
どのタイミングでリロードをかけるのでしょうか?
BeanFactoryなるもので、取得できるようでしたがそれも使わずに取り出せると
聞きました。

xml
<bean id="sampleService" class="sample.sampleServiceImpl" scope="singleton" init-method="init">

java
List list = sampleService.doBusinessLogic();
※このようにすれば当然取れてます。(大幅に省略してますが)

的を得ていないかも知れませんが、よろしくお願いします(まだ、混乱中・・)。
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2008-04-18 23:42
〜BeanFactoryや〜ApplicationContextあたりを使って読み込めます。
XmlBeanFactoryはDOMをガリガリと読み込んでるコードになってました。
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-04-21 09:19
ありがとうございます。

BeanFactory,ApplicationContextは共にxmlファイルを指定して、取得すると思いますが、
Webサーバ立ち上げ時に読み込まれるBean定義の取得はどうやったらできるのでしょうか?

Sessionの中をのぞいてみたのですがありませんでした。
また、
ServletActionContext.getRequest().getSession();
で取得しようとしてもありませんでした。

そもそも、Beanはsessionには格納されていないのでしょうか?
申し訳ありませんが、ご教授くださいませ。
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-04-21 11:51
こんにちは。

Spring2+struts2の組み合わせで試していますが、ActionSupportを規定クラスとした所からこのServletContext、或いはHTTPServletを取得する方法はないのでしょうか?

ServletContext sc = ←@
ctx = WebApplicationContextUtils.getWebApplicationContext(sc);
List list = (List)ctx.getBean("BeanID");

すいませんが、よろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)