【Java】DIコンテナって本当に便利か?

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2008/08/20(水) 23:23:26
インターフェースクラスやら設定やら増えまくって
かなりめんどくなってんだけどw
2008/09/29(月) 20:12:09
>>226
自分より下を見てまだマシだ安心する訳ですね。
2008/09/29(月) 20:46:28
>>228
ロッド・ジョンソンは今でもwithout EJBだよ
2008/09/30(火) 00:56:51
声が大きいのはひが氏だろ・・
2008/09/30(火) 01:33:11
>>230
もうロッドのいうことを無条件に賛同してるやつはいないだろ。
2008/09/30(火) 01:55:47
とりあえずよりよいプログラムを目指してここで情報収集してる
少数派がいがみあってもしょうがない
234デフォルトの名無しさん
垢版 |
2008/10/02(木) 07:33:34
こんだけ盛り上がるってことはまだまだ微妙なんだろうな
seasarも全然さくさくじゃねーしなw
2008/10/19(日) 21:03:33
Springどこいったよw
236名無し募集中。。。
垢版 |
2008/10/20(月) 01:28:40
SAStrutsかなり最強だと思うけどなー
DIとは関係ない部分でだけど
2008/10/20(月) 03:18:26
DIと関係ある話してくれよ
238名無し募集中。。。
垢版 |
2008/10/20(月) 03:30:53
DIを意識させないようにしてあるって所でいいなってさ
2008/10/20(月) 06:56:59
SAStrutsはSeaserに依存しまくりでしょ?
SAStrutsをパクってコンテナに依存しないStruts拡張を作るのが吉。
2008/10/20(月) 07:14:32
Sersarに依存してたらなんか悪いことあるのか?
Strutsに依存してることはOKなのか?
2008/10/20(月) 07:47:49
本人が前にこういう事を言っていたけど。
ttp://d.hatena.ne.jp/higayasuo/20080613/1213326209
まあ、S2でいい人は別にSAStrutsで良いんじゃね。
2008/10/20(月) 07:53:13
いまやSpring死亡してS2浮上中だけどな
今はその時とは事情が全く違う
2008/10/20(月) 11:44:06
いやあのサポートポリシーはコミュニティが黙ってないだろうと思ったら
あっさり変更したじゃないか。springはまだまだ死亡しないだろ。
244デフォルトの名無しさん
垢版 |
2008/10/20(月) 13:24:25
よくわからんけど、プロダクトがコンテナに依存して
嬉しいことってあるの?
プロダクトを作る側ではなくて、使う側の話だけど。

非依存や切り替え可能にできるなら、その方が良くね?
特にSpringのゴタゴタとか見ていると。

T2はコンテナ非依存とか言ってるけどさ。よくわからんけど、プロダクトがコンテナに依存して
嬉しいことってあるの?
プロダクトを作る側ではなくて、使う側の話だけど。

非依存や切り替え可能にできるなら、その方が良くね?
特にSpringのゴタゴタとか見ていると。

T2はコンテナ非依存とか言ってるけどさ。
2008/10/20(月) 16:41:54
大事なことだから・・・・?
2008/10/20(月) 20:04:47
それこそ使う側だと選択肢が少ない方が脳を使わなくて済むと言う
メリットがあると言えなくもないが。

むしろ、作る側が非依存で切り替え可能だと、影響調査やバージョンの互換性
やらテスト項目がてんこ盛りで泣けてくるとだろうし。
2008/10/20(月) 20:59:50
>>244
なんで2回繰り返してんだ?

依存するとコンテナの機能をフルに使える。
それで使う側に有益な機能が実現されればメリットになる。
DB依存のSQLも同じだろ。
2008/10/20(月) 21:13:31
コンテナに依存して、その機能をフルに使うプロダクトを作るも良し。

別にコンテナ固有の処理に依存する必要もないので、コンテナの部分を
抽象化して、切り替え可能にしたプロダクトを作っても良し。

コンテナに依存しているプロダクトを別のコンテナと使いたいので、
そのプロダクトのコピー版を作っても良し。
2008/11/01(土) 16:39:33
s2がやってるような処理は、プリプロセッサレベルで
dicon→javaのコード変換としてやってもらって、
後は普通にseasar2要らずでコンパイル→実行
みたいな枠組みは作れないのかなあ…
使う側としてはその方が嬉しいんだけどね。
プロダクトよりもseasar2の耐用年限を気にしないといけない今の状況だとチョット
2008/11/01(土) 17:19:13
自分で作ればいいじゃない
2008/11/01(土) 18:02:03
作れるなら作ってるさ
2008/11/01(土) 19:25:38
dicon→Javaで生成したコードをメンテするよりも、Seasar2自体のコードをメンテしたほうが楽だと思われる。
2008/11/02(日) 16:04:21
POJOのおかげで機能ではなくドメイン主体で継承作れるのはいいけど、
「なにがDIされるか」を知ってないと自分の書いたコードで
実行時になにが起こるかわかりにくいよねえ。継承ならまだ階層追えば
調べられるけど。

フレームワークのDIはほどほどにしてコード内で明示的に
委譲するようにしたい。でもspring利用しといて一部のクラスの生成だけ
サービス管理クラスを呼び出すのもわかりにくいし、難しいなあ
2008/11/03(月) 20:24:21
>>253
ドメイン主体で継承とか。。
DIを良くわかってないようだな。
勉強し直してきた方がいいぞ
2008/11/03(月) 21:33:33
>>254
君こそ勉強し直した方がいいぞ。DI以前にOOもな。
2008/11/03(月) 21:41:05
タイプセーフを壊す過度なDIは不毛。
Guiceみたいな形式が一番スマートだと思う。
2008/11/03(月) 21:52:57
253はいろいろ分かってなさそう
2008/11/03(月) 23:07:13
>>253>>256は同一人物っぽいな
タイプセーフを壊す過度なDIってw
2008/11/04(火) 19:41:26
コンパイルするときはキャストとDIは別問題だし
注入する実装クラスが違ってたらコンテナが起動時に教えてくれるから
DIでタイプセーフ云々を問題視したことないんだが
2008/11/04(火) 23:30:27
>>256
>タイプセーフを壊す過度なDIは不毛。
あんたはきっと実装に依存しすぎだと思う
2008/11/05(水) 00:01:17
>>253の一段落目はその通りだと思うんだけどおかしいの?
2008/11/05(水) 00:52:35
253だけど継承にしたって結局フレームワーク側がどうやって
継承元のメソッドを呼び出してるかは継承関係追っかけるだけじゃ
わからないから、DIも継承も関係ないや、と思った。まる。

263デフォルトの名無しさん
垢版 |
2008/11/05(水) 23:23:27
>>253
そりゃあんましイミないけど
気持ちは分かる
2008/11/06(木) 02:10:35
>>253
>実行時になにが起こるかわかりにくいよねえ。

そもそもDependency Injectionというのは
「分からないでもいい」という粗結合を実現するためのもの。
呼び出し側はインターフェースだけを知っていればよい。
理想論ではあるけれども。

おそらく実装に過度に依存したコードを書いているんだろうなと思う。
2008/11/06(木) 05:30:53
いやあ、デバッグの時に処理が追いにくいのがなんかなあって。
フレームワークのドキュメント調べてる時間で自分で書いた方が
早かったじゃんって思ったり。フレームワークの全機能使う訳じゃ
ないからさ。
2008/11/07(金) 00:43:44
>>265
DIコンテナに限らない話だな
2008/11/08(土) 16:22:02
技術的な話として便利かどうかと言えば明らかに便利
ただし、便利なら採用できるかといえば、それは次元の違う話
それだけ
2008/11/08(土) 18:56:25
まぁでもSpringやSeasar2採用してるプロジェクト多いでしょ
と思ったら1割くらいか…
2008/11/08(土) 19:07:59
DI支持派の主張で疑問なのは、

インタフェースと実装の分離という原則を説いて (それ自体は誰でも賛成する)
そこでDI登場、と素っ飛ぶところ。

DIという考えが生まれるよりも遥か昔から、プログラマはインタフェースと実装を分離していたわけだが。
2008/11/08(土) 19:43:28
それやってる奴って多分DI使ってる奴の100分の1以下だろ
だったら俺は昔からMVCに分けてたとかORマッピングやってたとかなっちゃうぜ
2008/11/08(土) 19:49:21
昔からインタフェースと実装の分離をしているような奴なら、
自前のサービスロケータやDIコンテナモドキも作っているわけで。

だったら、そこでDI登場、と素っ飛んでしまっても何も
問題は無いと思う。
2008/11/08(土) 19:53:27
俺はJavaなんて登場する前から仮想マシンを作って型に厳格な言語を構想していたが
273デフォルトの名無しさん
垢版 |
2008/11/08(土) 21:43:11
>>269
>インタフェースと実装の分離という原則を説いて (それ自体は誰でも賛成する)
この「インタフェースと実装の分離」を聞きながら、
「はあ?その理想論をどーやって現場で使えっつうんだよ!!」
って思ってたところに
>そこでDI登場、と素っ飛ぶところ
DIが出てきて、
「あーなるほどね、そーやるのね」
って感じでナットクされたってこと。

インターフェイスとインプリメンテーション
みたいに
理論と実践をやってみせたのがDI。
2008/11/09(日) 06:08:42
>>インタフェースと実装の分離という原則を説いて (それ自体は誰でも賛成する)
>この「インタフェースと実装の分離」を聞きながら、
>「はあ?その理想論をどーやって現場で使えっつうんだよ!!」
>って思ってたところに

そういう人のための道具ということでよろしいですか?
2008/11/09(日) 12:29:57
>>269
それまではService Locatorをつかってた。
昔のEJBとかね。
だから、最初はDIじゃなくてInversion of Control(制御の反転)コンテナとか軽量コンテナとか呼ばれてたんだよ。
2008/11/09(日) 12:42:13
DIって自動テストツールを使った、単体テストの時めちゃくちゃ便利
むしろDIが無いと出来ないといってもいいな
2008/11/09(日) 15:36:38
>>274
お前は独自フレームワーク(笑)でも作って一人で頑張って
278269
垢版 |
2008/11/09(日) 20:25:58
>>275
流石にファウラーの記事くらいは読んで言ってるよ。日本語訳もあるんだし

そもそもファウラー自身がメリットデメリットの話を書いているのに
素人が何の検討もなしに流行に乗っているだけという感じが。

巷が騒がしいから俺も遊んでみる→なんかコード書かなくて楽じゃね?→DIワショーイ
という狂宴
2008/11/09(日) 21:11:19
>>275
なんだ「自分は分かってる」君か。
臭いよ。
2008/11/10(月) 00:36:54
ループの御燗
2008/11/10(月) 19:44:31
めんどくせー。
AOPが簡単にできるだけで良いじゃねーか。
282デフォルトの名無しさん
垢版 |
2008/11/11(火) 20:30:12
半端に知ってる人が詰まっても知識の押し付けあいになっちゃうのですね。
あんたらばかぁ?
2008/11/11(火) 23:53:04
人が詰まるw
2008/11/11(火) 23:57:24
詰まらないスレだな。
2008/11/12(水) 00:27:39
> DIコンテナって本当に便利か?

ひがちゃんに聞いてみれば?
たぶん「ホットデプロイが!!!」しか言わないと思うが。
2008/11/12(水) 00:29:46
DIコンテナ要らないからホットデプロイだけくれよ。
2008/11/12(水) 00:32:52
>>286
javarebel
2008/11/13(木) 17:00:25
あると便利だけどねー
289デフォルトの名無しさん
垢版 |
2008/11/22(土) 23:40:00
俺みたいな古いPCしか持ってないと「軽量」ってことが、すごーく高価値なんだよね。
GlassFishやJBossやら動いちゃくれても、現実問題耐えられんのよw画面真っ白けにしてお休みしちょうし。
かと言ってxmlヘルへの逆行もごめんだしで、もうS2アディクティブですよ。
290デフォルトの名無しさん
垢版 |
2008/11/24(月) 22:44:02
>>289
J2EEコンテナ(GlassFish , JBoss vs Tomcat , jetty) と
フレームワークの違いを混ぜてないか?

DI コンテナは、フレームワーク(ライブラリ)であって、J2EE コンテナではないだろう。
2008/11/24(月) 22:50:43
依存性注入(DI)は成功したか?
http://www.infoq.com/jp/news/2007/12/does-di-pay-off

この記事でも、DIはテストする際の有利さ(便利さ)が語られている。
(逆に言えば、それしかない、という意見も紹介されている)
2008/11/25(火) 01:12:27
比較的導入が進んでる海外でも
この手のしょうもない議論がまだ繰り返されてるんだな。
OOPも初期は無駄な議論多かったよな。
今は自明だから議論が発生しないか、
あるいは分かってふりして黙ってるかの二択だが。
293デフォルトの名無しさん
垢版 |
2008/11/27(木) 00:25:49
だが実際問題、XMLは自動記述してくれないと嫌にならないか?結局というかRubyonRailのようなのが人気なのもJavaにはこんな問題もあるからだと思う。
2008/11/27(木) 01:30:13
XML書くのが嫌ならguice使えばいいじゃん
2008/11/27(木) 02:19:09
クラス図書くコストの1/3でクラス間の相関が記述出来る。
XML書くことの何が面倒なのか理解不能。
2008/11/27(木) 02:30:09
実際XML地獄が深刻なので回避しようというのがトレンド
2008/11/27(木) 08:42:29
今時のSeasar2プロダクトは規約で縛ってよっぽどのことがないとXML書かないけどな
SAStrutsとか
298デフォルトの名無しさん
垢版 |
2008/11/27(木) 21:00:58
Seasar2はいいな。確かに楽をさせてくれる。
299デフォルトの名無しさん
垢版 |
2008/11/27(木) 21:18:39
XMLヘルはHibernateやSpringやantのせいだろ。
あいつらは設定ファイルやデータファイルの域を逸脱してる。
web.xmlとstruts-config or faces-configだけなら大して難しくない。
2008/11/27(木) 23:07:03
antを責めるのは筋違い
2008/11/28(金) 02:24:15
>>299
つか、いまどきHibernateやらSpringやらもアノテーションだろ。
2008/11/28(金) 02:24:51
>>300
antの、XMLで条件分岐や繰り返しや変数代入ってプログラム書かされるのはイヤになんない?
2008/11/28(金) 07:34:04
XML地獄とか、いつの時代の話をしているんだよ、っという感はある。
2008/11/29(土) 09:15:28
例え自動生成してたとしても、XML地獄がそこに存在してるんだよ。
2008/11/29(土) 09:26:57
今はXML地獄ではなくて、アノテーション地獄だろ。
306デフォルトの名無しさん
垢版 |
2008/11/29(土) 10:14:29
XMLよりはマシっしょ、とつられてみる。
2008/11/29(土) 10:49:33
アノテーションはその場に書いてある
XMLは違うファイルをいちいち開いてみなければならない
2008/11/29(土) 12:18:43
Javaは複雑化し過ぎ。
2008/11/29(土) 16:30:43
>>307
俺は逆だと思う。
XML地獄は、設定をすべて一箇所にまとめておける。
アノテーションは、ソース開いてみないとわからない。

トランザクションなどの挙動を変えるときに、アノテーションはソースコードを編集しないといけないが、
XMLの場合は、設定ファイルをいじるだけ。

DIコンテナが登場した初期の思想、「設定をソースから追い出す」を、アノテーションは壊してしまっていると思う。

※アノテーションがすべて悪いといっているわけではない
310デフォルトの名無しさん
垢版 |
2008/11/29(土) 21:06:32
>>309
言いたい事を俺はどこまで理解できるか覚束ないレベルなんだが、
たとえばO/Rマッピングが一切のSQL文の排除を理想とするなら、SQL文定義ファイルは邪道になっちゃうよね。
設計思想に理想はあるべきでも、ほどよく妥協させてくれる仕組みがあるのが一番と思うんだが。
設定を一切合切ソースから追い出すのに、時間をかけすぎるくらいなら少しあってもいいんじゃ。コードの形式美を追求するためだけに書く人間が人生を浪費させられるんじゃねw
最後のひと言※があるからわかっちゃもらえると思う。俺はもうXMLオンリーの世界に帰りたくないw
なーんて。
2008/11/30(日) 05:31:11
eclipseみたいなIDEで編集してwarに固めてデプロイするのに
ソースいじったらコンパイルが必要とかはもうデメリットじゃないと思う。
ロジックの階層に応じてxmlなりアノテーションなりにまとめておければ
いいんじゃないの?設定ファイルにif文や変数いれたりアノテーションに
ビジネスロジック入れるようになるとやりすぎだと思う。
アノテーションでvalidateするのもvalidate処理が分散してちょっと嫌。

ORMはSQLを排除するんじゃなくて、速度を気にしないでいいところは
自動生成しちゃおうよって事だと思う。チューニングが必要なSQLだけ
外部ファイル書き出しでいいでしょ。つかみんなそうやってない?
2008/11/30(日) 13:46:22
>>309
トランザクションの挙動みたいにアプリケーション横断なものは、それはそれでまとめておけばいいだろ。
2008/11/30(日) 15:05:23
開発中の一覧性というなら、アノテーションの使用状況みればいい。
Seamみたいにカスタムアノテーションで共通設定をまとめれれば、設定を一箇所にまとめておける。
>>309 はアノテーションの使い方や、設定とアプリケーション構成記述の違いをわかってないだけではないか?
2008/11/30(日) 23:34:11
派生開発や保守対応での既存ソースコード変更には厳格な手続きが必要で神経質になる客先が多いし、
アノテーションが散らばったソースコードを元にライブラリマイグレーションする事を考えると鬱になる。
5年前に良いと言われていたものを今見てみるとひどいだろ? 5年後はどう?って感じるのも事実。
2008/12/01(月) 01:15:16
で、それがXMLで設定なら解決できるというのは、能天気すぎやしないか?
2008/12/01(月) 07:21:26
XMLで設定すれば解決できるなんて一言も言ってないが?
2008/12/04(木) 14:45:42
>>291
>これは実際Strategyパターンなのです。 依存性注入は(私の見るところ)基本的にひとまとめに使われるStrategyパターンです。

同意。
2008/12/07(日) 17:52:43
自動テストツール使わないなら、
DI使ってる意味が無いという事が分からない低能が多くて困る
流行ってるらしいからとかって理由だけでDI導入すんな!
2008/12/07(日) 18:25:47
( ゚д゚)ポカーン
2008/12/07(日) 19:21:05
まぁこんなもんだろ・・
一般のプログラマの能力なんて。
2008/12/07(日) 21:38:30
318はどう見ても釣り
2008/12/07(日) 23:24:37
全部のクラスに頑張ってログ出力書いたりログインチェック書いたりしたいんだろう
2008/12/07(日) 23:36:21
>>322
それは、AOPの機能じゃん。
まぁ、AOPのためにDIがあるといってもいいのかもしれないけど。
2008/12/07(日) 23:47:49
まぁ純粋にDIだけ使ってるのって無いよね
SeasaもSpringも
EJBは知らんけど
2008/12/08(月) 00:41:32
今どきトレースログとか書くの?
サービスクラスだけじゃなくて?
2008/12/08(月) 01:51:40
まあ、書くこともあるんじゃない?
俺は書かんけど。
327デフォルトの名無しさん
垢版 |
2008/12/10(水) 12:40:10
N1マッピングがめんどい。



めんどい。
2008/12/10(水) 15:43:35
ログインチェックだってDI使わなくても
filter挟んだりベースクラスでやるよね。
全部のクラスにコピペする人なんてさすがに見たこと無い
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況