トップページtech
1001コメント358KB

Java Spring Frameworkを語るスレ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
http://www.springframework.org/

乱立するフレームワークと競合するプロトコルの嵐のなかで、
リスクの高い決断を余儀なくされているJavaデベロッパ、プ
ロジェクトマネージャに対する福音です。

語るべし。
0154デフォルトの名無しさんNGNG
>>153
WebサービスしらなくてもWebサービスつくれちゃうとか。
データベースのテーブルデータを取ってくるのをWebサービスにしてVBに貼り付けとか、簡単にできた気がする。
StrutsものにしてもHibernaterものにしても、それぞれが何かをちゃんと把握してないと使えない気がする。
Eclipseではなくて、Javaの問題なんだけど、そういったそれぞれのコンポーネントが縦割りで独立していて、連携をとるのに知識が求められる。
MSの技術は、それぞれは大したことないんだけど、それぞれを意識せずに連携できる。

それを解消しようとするものとして、Springがあるんだろうけど。
0155デフォルトの名無しさんNGNG
>>154

> WebサービスしらなくてもWebサービスつくれちゃうとか。

それもどうかと思うが

> それを解消しようとするものとして、Springがあるんだろうけど。

それも違うような気がするが
0156デフォルトの名無しさんNGNG
>>155
そう?
StrutsやらHibernateやらのアーキテクチャの違いを、IoCを介することで一貫性を保ちやすくする、という目的もあると思うんだけど。
0157デフォルトの名無しさんNGNG
上手く説明できないが違和感を感じる>IoCを介してアーキテクチャの一貫性を保つ
0158デフォルトの名無しさんNGNG
>>157

違和感を感じる にも違和感を覚える。

0159デフォルトの名無しさんNGNG
このスレで一番参考になったレスかもしれない
0160デフォルトの名無しさんNGNG
>>157
SpringではSpringDAOとかSpringORMとかSpringMVCとかで
SeasarではS2DAOとかS2HibernateとかS2Strutsとかで

なんか、統一的な利用方法を提供しようとしてると思う。
基本的にJavaWorld2004/7の受け売り。
0161デフォルトの名無しさんNGNG
>>160

>SpringではSpringDAOとかSpringORMとかSpringMVCとかで
>SeasarではS2DAOとかS2HibernateとかS2Strutsとかで
これではアーキテクチャは統一されていないよね?
単一のフレームワークにて、ORMやJDBCフレームワークが利用できるのも統一的な利用方法とは
言えないのでは?

プレゼンテーション-ビジネス-パーシステンス層、全てにおいてIoCをベースとしたフレームワークを
利用できる為、アプリケーションにおけるアーキテクチャの統一性がはかれる。
またIoCを介することで、アプリケーションが個別のフレームワーク(Struts,Hibernate・・・)を意識しなくて
よいアーキテクチャを設計しやすくなると漏れは思っているがどうよ?
0162デフォルトの名無しさんNGNG
S2ネタはこっちでどうぞ
国産オープンソースDIコンテナSeasar V2(S2)
http://pc5.2ch.net/test/read.cgi/tech/1092044210/
0163デフォルトの名無しさんNGNG
1.1もでたことだし
0164デフォルトの名無しさんNGNG
ところで、SpringStrutsを使うとき、struts-configやapplicationContextをXDocletでは管理できんですか?
0165デフォルトの名無しさんNGNG
未だになんでSpringがいいのか全然分からないんだけど。
あんな別途にXML書いてアホかと思う。利点が見えない。
誰かSpringの利点が書いてあるリソース教えてください。
それか語ってください。
0166デフォルトの名無しさんNGNG
利点が見えないのはアホかと思うが、XML書いてアホかと思うのは同意しまくり。
SpringStrutsなんか使った日には、XDocletも使えず、struts-configとapplicationContextを書き換える必要がある。
かなり間違えやすそう。
テストが楽になるとはいうが、XML定義が正しいことのテストはどうするのさ?

利点はここでも見てろ。
http://wiki.bmedianode.com/Spring/?Spring+Framework

ようするに一極集中ってイイね、という話だ。
0167デフォルトの名無しさんNGNG
DIはEoDではない、と思われ。
0168デフォルトの名無しさんNGNG
>>165
Spring + Struts + Hibernateのコード書いてみたが、コード自体は非常にすっきりした。
いかにオブジェクトの生成・保持・伝達にコードが必要だったかわかる。

だから、逆に、Struts+HibernateでDI使わないとすると、あんないろんな場所でオブジェクトの生成取得コード書いて、必死に受け渡しして慎重に保持するのを見るとアホかと思う。
ということが言えるかもしれない。
0169デフォルトの名無しさんNGNG
そもそもWebインターフェースで複雑な業務を扱うのはいかがなかものか、と。
0170デフォルトの名無しさんNGNG
>>169
一般向けだと、現状Webインターフェイス以外の選択肢はないと思うが。
0171デフォルトの名無しさんNGNG
この本、
今現在webl○gicとN○Lの訳わかんねーフレームワーク使ってムカつきながら巨大webアプリ作ってるおれは
素直に感動した。

【軽快なJava】
ttp://www.esbooks.co.jp/books/detail?accd=R0035714
0172デフォルトの名無しさんNGNG
web10gicの変数名クラス名がやたら癇に障る
0173デフォルトの名無しさんNGNG
>>171
おれもその本買ってきた。J2EEはプログラマーの臨界点を超えて
複雑すぎるんじゃないかと思ってたのをそのまんま明快に書いてて
楽しい。
0174デフォルトの名無しさんNGNG
しかし、翻訳者がきらい。
へんな「翻訳者注」ない?
0175デフォルトの名無しさんNGNG
>>174
うむ、翻訳者がいけてないのは事実。こんなとこに訳注はいらんわい、
てなところにまで訳注があって、しかも日本語が意味不明。

最初、翻訳文なんで原文が意味不明なのかと思ったら、「訳者注」とか
書いてあるんでびっくりした。
0176デフォルトの名無しさんNGNG
えー、そうなの?
0177デフォルトの名無しさんNGNG
岩谷か。。。orz
0178デフォルトの名無しさんNGNG
>>171
よさげな本じゃな。
翻訳者には期待できないことを覚悟したうえで 
買って読んでみるか
0179デフォルトの名無しさんNGNG
おれ岩谷の名前を意識したことなくて、今回あまりの訳注の多さに
びっくりしたんだが、ぐぐってみるとすごいのな。いやびっくり。
0180デフォルトの名無しさんNGNG
軽快なJava読んだよ。
でも、はっきりいって Spring Frameworkスレの住人にとって、
今更技術的に役に立つことはないかも。

EJBっていけてないじゃんと思ってるけど、それを口に出すと
「お前がデキないだけ」
「お前のやってる案件が小規模なだけ」
と煽られてストレス溜まってるヤシが、自分の考えを再確認するには
いいかもしれない…
0181デフォルトの名無しさんNGNG
こんな感じのリストを、プロパティじゃなくbeanとして定義することってできますか?
  <list>
   <bean class="org.apache.struts.util.LabelValueBean">
    <constructor-arg index="0"><value>いらない</value></constructor-arg>
    <constructor-arg index="1"><value>0</value></constructor-arg>
   </bean>
 </list>
0182デフォルトの名無しさんNGNG
>>180
>軽快なJava読んだよ。

SF小説ですか?
0183デフォルトの名無しさんNGNG
話題についていってない人はっけーん。
っつうか、10レス上くらい読めばいいのに。
0184デフォルトの名無しさんNGNG
ぼけたつもりなんだろ>>182
いじめてやるなよ
0185デフォルトの名無しさんNGNG
定義ファイルだけど、同じクラスの定義を何個も書くの面倒。
値だけ異なる複数のBeanを定義する方法ってあるの?
例えば、商品クラスのインスタンスを4つ作るみたいな。
0186デフォルトの名無しさんNGNG
>>185
コピペ
0187デフォルトの名無しさんNGNG
Springからファクトリでクラスをロードするとき、
プログラムからコンストラクタに引数ってわたせない?
HttpRequestわたしたいんですが
0188デフォルトの名無しさんNGNG
>>187
あとで渡せばいいじゃん。
0189デフォルトの名無しさんNGNG
Spring + StrutsのActionをテストするにはどうするのがいいんだろう?
StrutsTestCaseは使えないし。
0190189NGNG
ごめん、StrutsTestCaseで問題なかった。
JNDIデータソースが使えないのが困るだけだ。
0191デフォルトの名無しさんNGNG
>>185
共通プロパティを持つ基底ビーンを指定できたら便利だな。
0192デフォルトの名無しさんNGNG
ProxyFactoryBeanを通すと生成されるオブジェクトが全部
シングルトンになっちゃうんですが
回避策はありますか?
0193デフォルトの名無しさんNGNG
確認してないが、そんなことはないと思うが。
どっちかでsingleton=trueのままなんじゃないの?
0194デフォルトの名無しさんNGNG
SeasarとSpringの違いってナニ?
0195デフォルトの名無しさんNGNG
Spring
メジャー
関わる人が多い
ドキュメントが揃っている
たぶんメインストリームになる

Seasar
日本ローカル
そこらへんで開発してる
構成ファイルがシンプル高機能
たぶんマイナーなまま
0196デフォルトの名無しさんNGNG
S2OpenAMFは使いたいと思ってるんだが
0197デフォルトの名無しさんNGNG
Seasar関係者が、自身の日記上でちゃんねらーに宣戦布告。
Seasarスレに本人降臨
http://pc5.2ch.net/test/read.cgi/tech/1092044210/
0198デフォルトの名無しさんNGNG
2つのappcalitionContext.xmlを読み込んでいるんですけど、
1つめのxmlファイルで、あるbeanのpropertyにlistをセットして、
2つめのxmlファイルから、その1つめで定義したbeanを呼び出して、
更にlistに要素を追加することって可能でしょうか?

このビーンはシングルトンです。
0199デフォルトの名無しさんNGNG
>>198
xmlファイルはどうとでも分割できるから、一つの定義でかけるならできるんじゃないの?
0200デフォルトの名無しさんNGNG
>>199
それが少々複雑なケースで、最初の1.xmlでhibernateで使用する
hbm.xmlをリストでもつLocalSessionFactoryBeanを定義して、
次に読まれる2.xmlで、更に他のhbm.xmlを追加したいような感じです。

で、更に2.xmlでリストに追加したいhbm.xmlの設定は1.xmlで指定した
hbm.xmlのpojoをmany-to-oneで参照しているんですよね・・・

それで2.xmlを読み込む際に1.xmlで追加していたはずのhbm.xmlファイルが
ないよみたいなエラーが出るんですけど、やっぱこれって普通に無理なんですかね?
0201デフォルトの名無しさんNGNG
>>200
普通に無理というか、普通にDIを誤解しているだけだと思われ。
Bean定義の継承ができるかどうか、という話だな。
欲しい機能だけど、できるかどうかは知らない。
いまリファレンス読んでる最中だから。
0202デフォルトの名無しさんNGNG
parent属性使えばBean定義の継承はできるようだけど、listに追加というのは難しそうだな。
parent属性は型が違ってもいいので便利。
複数のparentを持つにはどうすればいいのかは不明。
0203デフォルトの名無しさんNGNG
http://www.ozacc.com/library/
のSpring Framework Mail Extension使ったことある人いる?
Velocityを使ったVelocityMailMessageだけオリジナルを元にコピーする
コンストラクタがついてなくて困ってるんだけど。
Springでこれのインスタンス生成してビジネスロジッククラスにセット。
そのままVelocityJavaMailSenderに渡したら
マルチスレッドでごっちゃになってまう。

Singleton=falseにすればいいんだろうけど
その場合ビジネスロジック内にApplicationContextからの取得ロジックを書くことになって
ビジネスロジックがSpringに依存してしまう。
スキルありそうな人だからこれでも普通に使えると思うんだけどどうやればうまく使えるかな?
0204デフォルトの名無しさんNGNG
Spring+Strutsを使うと想定した場合に
サービスクラスとして
FooService implements IFoo
を定義して、
テスト用のサービスクラスとして
FooTestService implements IFoo
のようなものを定義することになると思いますが、

テストごとにテスト用のサービスクラスを変えることって
簡単にできますか?
Cactusと組み合わせた場合とかにデプロイごとに設定ファイル
変えるようなことになってしまわないですか?
0205デフォルトの名無しさんNGNG
>>204
できる。
テストケースによって読み込むconfigファイルを変えるだけ。
0206デフォルトの名無しさんNGNG
http://www.amazon.co.jp/exec/obidos/ASIN/0764574833
0207デフォルトの名無しさんNGNG
じゃ漏れも貼っとくか
http://www.amazon.co.jp/exec/obidos/ASIN/1932394354
ってたけーよ!
0208デフォルトの名無しさんNGNG
> 207

まあ、元がイングランドで発売(ポンド->円換算)だからね。。
Professional Java Development with the Spring Framework
の方は、まあ買える値段なんだけど、、、
0209デフォルトの名無しさんNGNG
SpringTestCase

ttp://blog.ozacc.com/archives/000862.html

本家のAbstractDependencyInjectionSpringContextTestsより使いやすそう。
(っていうかこのクラスCVSからとってこないと動かないし・・・・)
0210デフォルトの名無しさんNGNG
>>208
めっちゃ亀レスだけど、
amazon.co.jpはポンドとドルのときがあって、
ポンド換算のときはなぜか高い。

ドルになったときに購入するのがおすすめ。
0211デフォルトの名無しさんNGNG
日本語版☆⌒ 凵\(\・∀・) まだぁ?
0212デフォルトの名無しさんNGNG
英語版でいいから欲しいなぁ。。
0213デフォルトの名無しさんNGNG
Introduction Advice でわけわかめな状態に。

ttp://d.hatena.ne.jp/koichik/20040408#1081424192
この例で言うところの one や two って
もともとのクラス実装(study.Foo)に
ComparableIntroductionInterceptor の実装が足されたものと理解してるんですけど
実際 study.Foo の機能使うときってどうすりゃいいんでしょうか。
one, two に対して単純にキャストするだけでは例外出ちゃうし。
0214デフォルトの名無しさんNGNG
(スレ違いだと思うけど、他に書くとこないんで)

PicoConatiner 1.1出ました。
http://www.picocontainer.org/Download
0215デフォルトの名無しさんNGNG
>>214
Dependncy Injectionを語るスレ
http://pc5.2ch.net/test/read.cgi/tech/1099827125/
0216デフォルトの名無しさんNGNG
XML がソースそのものだと言ったが、もうひとつ。

 DI 廚 = マップ廚

分かるか?実行時解決マンセー!?
どっかでソースコード自動生成はもはや時代遅れで実行時バイトコード
生成マンセーとかいう香具師もいたな。何が犠牲になってるかも分からずに
実行時なんたらって言いたいだけちゃうんかと。

なんなら俺が DI + II(Implementation Injection)コンテナでも作ろうか。
コードはもはやインタフェースのみで意識するのは界面仕様のみ。
実装コードは不要。依存性と実装はおまいらの大好きな XML に。
実装の取り替えはもちろん、いつでも修正可能だ。理想的だろ?
0217デフォルトの名無しさんNGNG
>>216
必死ですね。だんだんかわいそうになってきた。
何が犠牲になってるの?
マップ厨のときはORM無条件に不要といってたから厨だったんだけど、java.util.Mapでマッピングすること自体は、特に問題ないと思われる。
というか、無条件にDIダメといってる文脈がマップ厨の人と同一人物くさい。

> なんなら俺が DI + II(Implementation Injection)コンテナでも作ろうか。

別に、DIのしくみだけで十分同じことが実装可能なので必要ないけど、面白そうだから、作ってくれ。
0218デフォルトの名無しさんNGNG
DIスレでやれ。
0219217NGNG
気づかなかったんだよorz
0220デフォルトの名無しさんNGNG
DIはある意味ではハシカみたいなもんじゃないかと思います。

思い起こせば、Javaを覚えたてのころは継承を乱用し、
GoF本を読めば(作ってるシステムにとって)意味のないクラスを量産し、
作ってる本人はご満悦ですが、保守する人とかどうしてるんだろう、
と思う今日このごろなコードもかつては作ってしまった気もします。

ハシカやオタフクカゼの困ったところは、「一度かかっておかない」と抗体ができないところ。

新しい設計技法、言語、ツールを知ると使いたくなるというのは
技術者の真っ当な感情だと思いますが、下手に使うとまわりが被害をこうむりますかも。
あと、伝染性がある上に発病期間までに時間があったりすることも。
ちゃんとテストして(使ってみて)、これは行けると踏んでから、
まずはリスクの少ない部分から適用していきましょうと(予防接種)。

生産性と品質に対して何の寄与もしないどころか、
足を引っ張るだけのフレームワークにハメられた僕は
別な何かが見える様になったと思います。
0221デフォルトの名無しさんNGNG
ま、コピペもある意味ではハシカみたいなもんじゃないかと思うわけだな。
新しい技術に拒絶感を持つのはなにみたいなもんだろうか
0222デフォルトの名無しさんNGNG
待て待て。
ここはネタスレのウォッチスレではないはずだ。
0223デフォルトの名無しさんNGNG
ひっそりとヲチするのもいいかもね。
0224デフォルトの名無しさんNGNG
DIスレからコピペ。

585 名前:デフォルトの名無しさん 本日のレス 投稿日:04/11/24 13:04:21
燃料投下。
ttp://d.hatena.ne.jp/higayasuo/20041124#1101254759
0225デフォルトの名無しさんNGNG
>>224
ま、そんなもんじゃない?
定義ファイルの分割がよくわからんけど。
要するに、Springじゃひがさんのやりたいことはできない、という程度かと。
0226デフォルトの名無しさんNGNG
斜に構えるSpring Frameworkユーザーであった。
0227デフォルトの名無しさんNGNG
ネタスレに巻き込まれたくないからな。
0228デフォルトの名無しさんNGNG
Java World 1月号に特集出てるね。
0229デフォルトの名無しさんNGNG
>> 228

出てた。
約20ページの特集で、Spring+Hibernate、Spring+Strutsについての解説。
割りと初歩的な部分だけど、丁寧に解説されている印象。
0230デフォルトの名無しさんNGNG
OGNLは諸刃の剣ということにしておこう。負け惜しみ的に。
たしかにオートバインディングは、名前でのオートバインディングしか使えないね。型によるのは怖い。
定義ファイルの分割については非常に疑問だね。インクルードができない、ということかな。名前空間のこと?
定義ファイルの肥大化に関しては、大規模プロジェクトで大規模に現れるような、シングルトンなクラスばっかりだと、XDoclet使えばいいということにもなるので、実質問題にはならないかと。
ただ、そんときは定義の継承を上手に使う必要があると思う。
逆にいえば、定義の継承ができないSeasar2では、XDocletを使ってクラスにBean定義を埋め込むのと面倒なことが起こるかも。
0231デフォルトの名無しさんNGNG
Springn 1.1.1のリリースノートに
"import" element for XML bean definitions
ってのがあるんだけど、これがインクルード機能じゃないのかな。詳細をみても
よく分からんかったのだけど。

両方ともまだ使ってなくて、Seasar2は日本語資料が多いし、Springはデファクトになりそうな勢いが
あるということで、最近ずっと資料をよんで検討してました。まだ使ってない人間の感覚からすると、
Springのほうが面倒っぽいですね。直感的でないというか。

なんか微妙に変な感じがするなーと思ってたら、この日記を読んでなるほどと思った。

ttp://d.hatena.ne.jp/koichik/20040330#1080650506

ここに書いているとおり、Springの資料を読んでるとなんでもかんでもBeanなんだな、
と感じる。Spring的純粋主義なんでしょうか。一方Seasar2は「作ってるクラス定義自体には
Seasar2フレームワークへの依存関係を絶対もたせない」という方向での純粋主義みたいな
ところがありますね。後者の方が好みかなあ。
0232デフォルトの名無しさんNGNG
クラスにはフレームワーク依存のメンバは現れないんだけど、最終的なアプリケーションとしてフレームワークに依存するから、好みの問題なんだよね。
結局フレームワークに依存するんだから、どこにその依存が現れるかは、どうでもいいと思う。
信じる道を行けばいいだけ。
ポリシーが一定してないのは困るけど、両者ともそういうことはないし。
0233デフォルトの名無しさんNGNG
漏れも231的な感覚なんだけど、
クラスがフレームワーク依存しなければ、
「再利用しやすいかも」って思うんだよね。

実際に使い込んだわけじゃないから、あくまで幻想だけど。
0234デフォルトの名無しさんNGNG
検索するとSpring1.1からOGNL対応っていうのをみかけるんだけど、結局どうなったんだろう?
0235デフォルトの名無しさんNGNG
2月ごろ優先度がminorからmajorにあがって、4月ごろ1.1の予定になってたのが、5月にminorにおちつつ1.2予定になって
そして11/16に1.3予定になった形跡がある。
まだまだ先の話か。
0236デフォルトの名無しさんNGNG
SpringにしてもSeaser2にしてもJava自体が強い型付け言語なのにも関わらずリフレクションを多様するDIContainerってどおなのよ?
本当に使いやすいのかなあ?
0237デフォルトの名無しさんNGNG
強い型付けだからこそ、DIコンテナが生きるんだよ。
ビーン定義ファイルは型による事前検証が可能だしね。
0238デフォルトの名無しさんNGNG
コンパイル時に検証できないうえにファクトリでダウンキャストしないといけないのに?
0239デフォルトの名無しさんNGNG
>>238
> コンパイル時に検証できないうえにファクトリでダウンキャストしないといけないのに?

周辺ライブラリを使えばダウンキャストは不要。
例えばStrutsのActionに最初から依存Serviceへの
参照がセットされてるとか。

というかむしろダウンキャストしない使い方が標準。
0240デフォルトの名無しさんNGNG
>>238
Javaソースを検証するコンパイル時に、Bean定義を検証する必然性はあるの?
別でいいじゃん。
0241デフォルトの名無しさんNGNG
ま、大きくなったらわかるさ。
0242デフォルトの名無しさんNGNG
>>241
今知りたい。
コンパイル時に検証したい理由。
たとえばantで別の検証タスクを作ってもいいし、簡易なら、単にビーン定義を読み込むだけの検証用プログラムを作ればいいと思うんだが。
0243デフォルトの名無しさんNGNG
>>239
なるほど、やっぱダウンキャストは勝手にやってくれって感じだよな

>>242
Javaしか知らん奴には弱い型付けとか言ってもわからんのだろう
藻前は却下
0244デフォルトの名無しさんNGNG
>>243
弱い型付けってなんですか?
0245デフォルトの名無しさんNGNG
>>244
http://www.google.com/webhp?hl=ja

ほれ
0246デフォルトの名無しさんNGNG
>>245
「弱い型付け」で検索したら、Server Errorでますた(T-T)
0247デフォルトの名無しさんNGNG
>>246
釣りはいいからさっさと調べろボケ
0248デフォルトの名無しさんNGNG
型の指定が「無い」ことを「弱い型付け」と呼んでいいんですか?
0249デフォルトの名無しさんNGNG
>>247
ほんとに出たんだって。
GoogleのServer Error
0250デフォルトの名無しさんNGNG
ところで、Bean定義がコンパイル時に型解決できないのを、コンパイルとは別にBean定義の検証してもいいんじゃないの?っていう疑問は解決できませんでしたよ。
0251デフォルトの名無しさんNGNG
設定ファイルの不備が実行時でないと検出できないってのは効率が悪すぎる。
で、自分はこんな感じでAntを使用してチェックしてるんだが、どうよ?

1.spring-beans.dtdを利用して、DTDレベルの妥当性のチェックをする。
2./beans/bean/@classの値がクラス名として正しいのか検証する。

1.はAntのXMLValidateタスクを使用。
2.はXPath + java.net.URLClassLoaderを使用しAnt拡張タスクを自作して使用。

まぁ、DTDレベルの妥当性チェック + クラス名チェックなんで完全とまではいかないが、
実行時前にチェック出来るんで、だいぶ楽になった気がするな。
0252デフォルトの名無しさんNGNG
>>251
だから、とりあえず設定ファイル読み込むだけのプログラム作って、それでエラー検出してもらうんじゃだめなの?と。
なんならそれをAntのタスクにしてもいいし。
0253デフォルトの名無しさんNGNG
java房は世の中javaしかないと表ますね
■ このスレッドは過去ログ倉庫に格納されています