インターフェースクラスやら設定やら増えまくって
かなりめんどくなってんだけどw
探検
【Java】DIコンテナって本当に便利か?
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2008/08/20(水) 23:23:26397デフォルトの名無しさん
2010/01/06(水) 21:20:18 GDIなら…
398デフォルトの名無しさん
2010/01/07(木) 10:17:34 三菱GDIエンジン
399デフォルトの名無しさん
2010/01/07(木) 22:44:22 >>396
WebBeansの頃から空気だろ
WebBeansの頃から空気だろ
400デフォルトの名無しさん
2010/01/09(土) 05:03:49 CDIは、Tomcatとか各サーバーが標準装備するようになったら他のDIコンテナいらなくなりそう。
CDIのせいで一番最初に滅びるのはEJBだが。
CDIのせいで一番最初に滅びるのはEJBだが。
401デフォルトの名無しさん
2010/01/09(土) 08:54:16 @TransactionAttributeはjavax.ejbだから滅びないよ
402デフォルトの名無しさん
2010/01/09(土) 13:53:11403デフォルトの名無しさん
2010/01/09(土) 14:42:50404デフォルトの名無しさん
2010/01/09(土) 15:33:46 SpringもGuiceもSeasar2も標準装備はしてないよね?
405デフォルトの名無しさん
2010/01/09(土) 15:47:34 後発が同じ条件で流行ると思ってるのか?
EJB3だって流行ってないだろ?3.1だって流行らないよ
理由なきJavaEEアレルギーはまだまだ根強い
EJB3だって流行ってないだろ?3.1だって流行らないよ
理由なきJavaEEアレルギーはまだまだ根強い
406デフォルトの名無しさん
2010/01/09(土) 16:01:54 EJBはサーブレットコンテナだけで動かないでしょ
407デフォルトの名無しさん
2010/01/09(土) 16:11:06 OpenEJB突っ込めば動く
408デフォルトの名無しさん
2010/01/17(日) 11:42:25 CDI手軽すぎ。でもトータルで見るとSeasarが勝る。
409デフォルトの名無しさん
2010/01/18(月) 06:45:59 学習コストでまける
410デフォルトの名無しさん
2010/01/19(火) 17:07:41 FFY最強!
411デフォルトの名無しさん
2010/10/04(月) 04:35:34 EE6でJavaは完成された感がある。
気に入らない人はまだまだ居そうだけど。
気に入らない人はまだまだ居そうだけど。
412ななし。
2011/07/27(水) 19:32:41.18 カ オ ス ラ ウ ン ジ ゆ る せ な ぁ い ー
413デフォルトの名無しさん
2011/10/26(水) 20:17:30.57 仕様と実装を切り離す
414デフォルトの名無しさん
2012/01/02(月) 07:03:20.58 DIコンテナって2種類に分類されると思うんだ。以下あってる?
1. 型(inteface)に対するIOC(Guice)
2. 保有クラスに対するIOC(Spring)
(1)はinterfaceの保有クラスを区別せず1種類の実装が提供される。
(2)はinterfaceの保有クラスによって実装クラスが違う可能性がある。
1. 型(inteface)に対するIOC(Guice)
2. 保有クラスに対するIOC(Spring)
(1)はinterfaceの保有クラスを区別せず1種類の実装が提供される。
(2)はinterfaceの保有クラスによって実装クラスが違う可能性がある。
415デフォルトの名無しさん
2012/01/02(月) 07:11:26.86 たとえば以下のような例の場合、
Guice系の場合にはインターフェースに対する実装の提供を1つだけ書いて
全てのIServiceに同じ実装が渡される。
Spring系の場合にはインターフェースに対する実装の提供を
コンテナからHogeを生成した場合、Mogeを、Kogeを生成した場合と3種書いて
保有クラス(Hoge,Moge,Koge)によってIServiceに違う実装が渡される。
class Hoge {
IService service;
}
class Moge {
IService service;
}
class Koge {
IService service;
}
Guice系の場合にはインターフェースに対する実装の提供を1つだけ書いて
全てのIServiceに同じ実装が渡される。
Spring系の場合にはインターフェースに対する実装の提供を
コンテナからHogeを生成した場合、Mogeを、Kogeを生成した場合と3種書いて
保有クラス(Hoge,Moge,Koge)によってIServiceに違う実装が渡される。
class Hoge {
IService service;
}
class Moge {
IService service;
}
class Koge {
IService service;
}
416デフォルトの名無しさん
2012/01/02(月) 10:23:11.80 意味がよくわからん
guiceはintefaceと実装が一対一の関係「専用」のDIであるということを言ってる?
そういう意味なら違う
その場合は実装をアノテーションで指示するようになってる
guiceはintefaceと実装が一対一の関係「専用」のDIであるということを言ってる?
そういう意味なら違う
その場合は実装をアノテーションで指示するようになってる
417デフォルトの名無しさん
2012/01/02(月) 13:10:41.09 >>416
>guiceはintefaceと実装が一対一の関係「専用」のDIであるということを言ってる?
うん、そういうこと。@Namedを使う抜け穴があるけど、それはguice系DIの思想的に
望ましくないと思うんだ。
intefaceと実装が一対一の関係だから実装を変更するときは
アプリケーション中でそのinterfaceに対する実装が一括で変更される。
そんなinterface単位の一括管理がguice系の方向性だと思うんだ。
>guiceはintefaceと実装が一対一の関係「専用」のDIであるということを言ってる?
うん、そういうこと。@Namedを使う抜け穴があるけど、それはguice系DIの思想的に
望ましくないと思うんだ。
intefaceと実装が一対一の関係だから実装を変更するときは
アプリケーション中でそのinterfaceに対する実装が一括で変更される。
そんなinterface単位の一括管理がguice系の方向性だと思うんだ。
418デフォルトの名無しさん
2012/01/02(月) 13:15:58.26419デフォルトの名無しさん
2012/01/02(月) 13:23:52.18 続き
対してspringなどはinterfaceを使っているクラス単位で管理すると思うんだ。
例えば実装クラスを入れ替える場合、interfaceをフィールドに持っていたり
使っているクラス(bean)毎に設定を変更する。
抜け穴があるにしろ、基本的にDI箇所が増えるほど
設定が増える代わりに1つ1つ細かく指定できるのが利用クラス(bean)単位のDI
対してspringなどはinterfaceを使っているクラス単位で管理すると思うんだ。
例えば実装クラスを入れ替える場合、interfaceをフィールドに持っていたり
使っているクラス(bean)毎に設定を変更する。
抜け穴があるにしろ、基本的にDI箇所が増えるほど
設定が増える代わりに1つ1つ細かく指定できるのが利用クラス(bean)単位のDI
420デフォルトの名無しさん
2012/01/02(月) 13:31:53.96 >>418
説明がよくなかったかな。。。
例えばモックから完成クラスへ入れ替える、
あるいはMySQLからOracleDBに入れ替えるような、
そのインターフェースに対してアプリケーション中が一気に入れ替える
リソースの変更的な入れ替えのためにはGuiceは向いてるけど、
Buttonインターフェースに対してGreenButton, RedButtton, BlueButton
どれかを生成するストラテジーパターンみたいなものには向いていなくて、
仮にそれをするならわざわざIGreenButton, IRedButton, IBlueButtonみたいに
別々のインターフェースを作るのがGuice系の正しい使い方なんじゃないかな?
説明がよくなかったかな。。。
例えばモックから完成クラスへ入れ替える、
あるいはMySQLからOracleDBに入れ替えるような、
そのインターフェースに対してアプリケーション中が一気に入れ替える
リソースの変更的な入れ替えのためにはGuiceは向いてるけど、
Buttonインターフェースに対してGreenButton, RedButtton, BlueButton
どれかを生成するストラテジーパターンみたいなものには向いていなくて、
仮にそれをするならわざわざIGreenButton, IRedButton, IBlueButtonみたいに
別々のインターフェースを作るのがGuice系の正しい使い方なんじゃないかな?
421デフォルトの名無しさん
2012/01/02(月) 13:37:47.57 >>420
いやーアノテーションでやるでしょそれは
IGreenButton等々はかなりまずいスタイルだよね・・・
インターフェイスに対してプログラミングするスタイルを完全にスポイルしちゃう
springはよく知らないけど、
あるinterfaceに対するデフォルトのバインディングを指定することもできないの?
いやーアノテーションでやるでしょそれは
IGreenButton等々はかなりまずいスタイルだよね・・・
インターフェイスに対してプログラミングするスタイルを完全にスポイルしちゃう
springはよく知らないけど、
あるinterfaceに対するデフォルトのバインディングを指定することもできないの?
422デフォルトの名無しさん
2012/01/02(月) 13:48:16.33 すると単なるIoCのFactoryクラス、つまりinterfaceなんか別に必須ではなくて
注入される側のクラスから見えないだけのFactoryクラスとして側面をもつのが
spring系DIで、
interface必須でinterfaceによる固い設計、実装クラス一括管理が
guice系DIの特徴に見えると思います。
注入される側のクラスから見えないだけのFactoryクラスとして側面をもつのが
spring系DIで、
interface必須でinterfaceによる固い設計、実装クラス一括管理が
guice系DIの特徴に見えると思います。
423デフォルトの名無しさん
2012/01/02(月) 13:59:52.82 >あるinterfaceに対するデフォルトのバインディングを指定すること
Guiceにとってはこちらが「基本」ですが、
Springにとっては「そういうのもできる」という立場ではないかと。
逆にGuiceで@Namedを使うようなパターンに対しては
Springにとってはこちらが「基本」ですが、
Guiceにとっては「そういうのもできる」という立場ではないでしょうか。
Guiceにとってはこちらが「基本」ですが、
Springにとっては「そういうのもできる」という立場ではないかと。
逆にGuiceで@Namedを使うようなパターンに対しては
Springにとってはこちらが「基本」ですが、
Guiceにとっては「そういうのもできる」という立場ではないでしょうか。
424デフォルトの名無しさん
2012/01/03(火) 10:54:33.00 DIはユニットテストのモック差し替えぐらいにしか使えないという記事を読んで、
やはりそういう用途にDIの概念が特化するならば、Guiceの@Namedみたいなiocコンテナ
の使い方はDIとは別の概念として切り分けられるべきではないかなと思た。
やはりそういう用途にDIの概念が特化するならば、Guiceの@Namedみたいなiocコンテナ
の使い方はDIとは別の概念として切り分けられるべきではないかなと思た。
425デフォルトの名無しさん
2012/01/03(火) 13:32:47.27 DIよりもAOPがメインだよな
DIコンテナの用途って
DIコンテナの用途って
426デフォルトの名無しさん
2012/01/03(火) 16:35:15.29 DIの方がメインでは?
427デフォルトの名無しさん
2012/01/03(火) 23:14:35.03 俺もあくまでDIの方がメインだと思う。
428デフォルトの名無しさん
2012/01/04(水) 08:38:37.47 実装の切り離し以外の役割を背負いすぎてるのが
学習時の混乱をもたらしてると思う
DIコンテナっぽいものをJavassistの練習で作ろうとしたところ
DIってどうあるべきだ?と考え出したところで停滞してしまったw
学習時の混乱をもたらしてると思う
DIコンテナっぽいものをJavassistの練習で作ろうとしたところ
DIってどうあるべきだ?と考え出したところで停滞してしまったw
429デフォルトの名無しさん
2012/01/22(日) 19:01:48.77 やっぱDIコンテナ使う人って、とりあえずなんかクラス作るときは
例外なしにインタフェースかぶせとくもんなの?
今のプロジェクトはそうなってるけど、ユニットテストもないし
実装もすべて一個なんだから、もう密結合でもよくね?って気がすごくしてるんだけど
例外なしにインタフェースかぶせとくもんなの?
今のプロジェクトはそうなってるけど、ユニットテストもないし
実装もすべて一個なんだから、もう密結合でもよくね?って気がすごくしてるんだけど
430デフォルトの名無しさん
2012/01/22(日) 19:38:29.82 そりゃ、ただの思い込みor実装上(AOPの方式とか)の制約じゃねーの?
俺は本当にプロバイダーモデルが必要な所しかInterfaceの分離はしないし、
テストに関しては黒魔術で対応してる。
俺は本当にプロバイダーモデルが必要な所しかInterfaceの分離はしないし、
テストに関しては黒魔術で対応してる。
431デフォルトの名無しさん
2012/01/23(月) 14:44:29.86 >>429
自分はいわゆるコントローラ(サービス)クラスとかDaoクラスであれば、
最初は実装クラスが1つしかなくても、例外なくインターフェースかぶせておくようにしている。
あとから、実装クラスを変えたくなった時や複数のバリエーションの実装クラスを作りたくなったとき、
context.xml で切り替えるだけで、プログラムを修正しないですむので、
プロジェクトの終盤で大きな変更を加えなければならなくなったときに、だいぶ助かったことがある。
例:
たとえば Dao で、インターフェース FooDao があったとして、
最初は iBatis で作っていたが(FooDaoIbatisImpl)、
一部独自に実装したくなった時は、FooDaoHogeImpl というように、FooDao を使った
別の実装クラスを作る。
context.xml で、bean id="fooDao" class=".." のところを FooDaoHogeImpl に変更すればいいので、
サービスオブジェクト側からは、変更を気にしなくて済む。
これでパフォーマンスチューニングをやったり、Dao の取得先を RDB から KVS とかに切り替えたりした。
自分はいわゆるコントローラ(サービス)クラスとかDaoクラスであれば、
最初は実装クラスが1つしかなくても、例外なくインターフェースかぶせておくようにしている。
あとから、実装クラスを変えたくなった時や複数のバリエーションの実装クラスを作りたくなったとき、
context.xml で切り替えるだけで、プログラムを修正しないですむので、
プロジェクトの終盤で大きな変更を加えなければならなくなったときに、だいぶ助かったことがある。
例:
たとえば Dao で、インターフェース FooDao があったとして、
最初は iBatis で作っていたが(FooDaoIbatisImpl)、
一部独自に実装したくなった時は、FooDaoHogeImpl というように、FooDao を使った
別の実装クラスを作る。
context.xml で、bean id="fooDao" class=".." のところを FooDaoHogeImpl に変更すればいいので、
サービスオブジェクト側からは、変更を気にしなくて済む。
これでパフォーマンスチューニングをやったり、Dao の取得先を RDB から KVS とかに切り替えたりした。
432デフォルトの名無しさん
2012/01/24(火) 19:58:47.06 >やっぱDIコンテナ使う人って、とりあえずなんかクラス作るときは
>例外なしにインタフェースかぶせとくもんなの?
そうしてもいいぐらい粒の大きいクラスにしかDIしないこと
>例外なしにインタフェースかぶせとくもんなの?
そうしてもいいぐらい粒の大きいクラスにしかDIしないこと
433デフォルトの名無しさん
2012/01/25(水) 19:44:03.96 何十とあるControllerやService、Daoに対して、例外無しに全てIFを用意するのか?、っとい疑問が生まれること自体は、まあ普通だと思う。
434デフォルトの名無しさん
2012/02/16(木) 17:08:25.22 必要なところをinterfaceに変えるのって手間掛かるか?
IDEのリファクタリング機能とか、無くても一旦コンパイルエラーにして
置換掛けていけばいいだけだし
必要になってからinterfaceにしても別によくね
IDEのリファクタリング機能とか、無くても一旦コンパイルエラーにして
置換掛けていけばいいだけだし
必要になってからinterfaceにしても別によくね
435デフォルトの名無しさん
2012/02/17(金) 10:16:39.50 DIの利点ってやっぱテスト部分なのかね
436デフォルトの名無しさん
2012/02/17(金) 20:52:25.87 インジェクション設定が増えすぎるアンチパターンを懸念すると
テストの設計とDIでセットにするのが良いかもしれん
テストの設計とDIでセットにするのが良いかもしれん
437デフォルトの名無しさん
2012/02/23(木) 01:44:38.83 interfaceを書きながら設計していく感じが多いかな
implするクラスも同時に書いていくと、設計が終わる頃にはスケルトン+モックにもなるクラスができてる
implするクラスも同時に書いていくと、設計が終わる頃にはスケルトン+モックにもなるクラスができてる
438デフォルトの名無しさん
2012/02/23(木) 13:50:41.31 >何十とあるControllerやService、Daoに対して
なんで一対一でinterface用意する必要があるの…?
根本的にわかってないとしか言いようがない
なんで一対一でinterface用意する必要があるの…?
根本的にわかってないとしか言いようがない
439デフォルトの名無しさん
2012/02/23(木) 21:53:45.88 一対一にしないならDIやる意味なくない?
440デフォルトの名無しさん
2012/02/23(木) 22:21:45.78 インターフェイスをDIのタグとして使ってるってことかw
441デフォルトの名無しさん
2012/02/24(金) 18:50:12.83 DIって言葉も、なんかMVCと同じでぼくの使ってる最強のDIみたいなのが十人十色で意思疎通難しいし
もうNGワードにしたほうがいいんじゃないか
もうNGワードにしたほうがいいんじゃないか
442431
2012/02/26(日) 21:41:06.65 >>439
開発当初は1対1しかないかもしれないけど、
あとから増える場合もあるので、そういった時には、インターフェースと実装クラスを分けておいてよかったと思うよ。
まぁ、これから作ろうとしているシステムが、使い捨て(寿命が短い)であまり変更を考慮しなくていい場合と、
ある程度長くなりそうな場合とで、手間とのトレードオフもあると思うけど。
開発当初は1対1しかないかもしれないけど、
あとから増える場合もあるので、そういった時には、インターフェースと実装クラスを分けておいてよかったと思うよ。
まぁ、これから作ろうとしているシステムが、使い捨て(寿命が短い)であまり変更を考慮しなくていい場合と、
ある程度長くなりそうな場合とで、手間とのトレードオフもあると思うけど。
443デフォルトの名無しさん
2012/02/26(日) 21:53:56.03 流れを誤読しとる?
444デフォルトの名無しさん
2012/02/26(日) 22:05:10.19 >>442
使い捨てがどうのともっともらしいことを言っているけど、
単に実装をIFを分離すべきポイントをちゃんと設計出来る能力が無いから
とりあえずなんでも分離しておく、っと言っているようにしか聞こえない。
そんなんで良いのか?
使い捨てがどうのともっともらしいことを言っているけど、
単に実装をIFを分離すべきポイントをちゃんと設計出来る能力が無いから
とりあえずなんでも分離しておく、っと言っているようにしか聞こえない。
そんなんで良いのか?
445デフォルトの名無しさん
2012/02/27(月) 08:57:55.64 DIのために一対一にするくらいならクラスを指定してDIすればいいだろってこと
446431
2012/02/27(月) 15:49:00.65 >>444
そう言われると反論できない。
突貫工事が多いから、とりあえず *Dao と *Service は
インターフェースと実装クラスに分けとけ、というルールを決めて、
開発に着手していたことは多かったな。
いちいち
・こういうケースは分離しましょう
・こういうケースは分離しなくていいです
というルールを考えている余裕がなかったので。
そう言われると反論できない。
突貫工事が多いから、とりあえず *Dao と *Service は
インターフェースと実装クラスに分けとけ、というルールを決めて、
開発に着手していたことは多かったな。
いちいち
・こういうケースは分離しましょう
・こういうケースは分離しなくていいです
というルールを考えている余裕がなかったので。
447デフォルトの名無しさん
2012/02/27(月) 16:39:07.27 そういう機械的な設計でいいと思うけどね。
堅実というか無難というか。
堅実というか無難というか。
448デフォルトの名無しさん
2012/02/27(月) 19:59:53.91 実装クラスでメソッド追加した際に
インターフェイス側に宣言コピペするだけだしな
ファイル分けるもの面倒臭い
public interface A {
void f();
public static class Imp implements A {
public void f(){}
}
}
インターフェイス側に宣言コピペするだけだしな
ファイル分けるもの面倒臭い
public interface A {
void f();
public static class Imp implements A {
public void f(){}
}
}
449デフォルトの名無しさん
2012/02/27(月) 23:02:03.47 なんかよくわからんなー
DIとなんの関係がある話なのかすらよくわかんない
Cのプロトタイプ宣言の話聞いてるみたいだ
DIとなんの関係がある話なのかすらよくわかんない
Cのプロトタイプ宣言の話聞いてるみたいだ
450デフォルトの名無しさん
2012/02/27(月) 23:09:58.39 DIで注入される側
FooServiceImplならFooService型の定義になってて
BarServiceImplならBarService型の定義…みたいなことやってるってこと言ってるの?
FooServiceImplならFooService型の定義になってて
BarServiceImplならBarService型の定義…みたいなことやってるってこと言ってるの?
451デフォルトの名無しさん
2012/02/27(月) 23:15:39.88 いや例がよくないwごめん
452デフォルトの名無しさん
2012/02/27(月) 23:18:58.00 もうDaoでインターフェイスを分離する意味ないだろ
昔ならモックに差し替えるのに必要だったが
昔ならモックに差し替えるのに必要だったが
453デフォルトの名無しさん
2012/02/28(火) 23:46:53.79 intra-martの人達ってまだS2押してんの?
454デフォルトの名無しさん
2012/04/19(木) 00:58:00.99 >>140
>>351
>>444
話が合いそうだ
・直列化とビルダーパターン使うべきポイント
・マクロやジェネレータ使えばいいんじゃね?ってポイント
・なぜプログラムの修正をそんなに怖がる?ってポイント
・なぜファクトリの数行を面倒臭がる?(コード書けば言語解析による依存関係調査が可能だし、可読性も高まるのに)
って、結構どうでもいいところでDI使ってる人が沢山いる。
結局、普通のオブジェクト指向に対するシンタックスシュガーに過ぎないので、
経験のない人間が下手に使うと、どう再利用すればいいのか分からない、ゴミ山のような小さいクラス群と
環境によって内容が違う定義ファイルに道を迷わされる。。。
労働集約型産業やりたいのなら、COBOLとか実は良い言語だぜ?
>>351
>>444
話が合いそうだ
・直列化とビルダーパターン使うべきポイント
・マクロやジェネレータ使えばいいんじゃね?ってポイント
・なぜプログラムの修正をそんなに怖がる?ってポイント
・なぜファクトリの数行を面倒臭がる?(コード書けば言語解析による依存関係調査が可能だし、可読性も高まるのに)
って、結構どうでもいいところでDI使ってる人が沢山いる。
結局、普通のオブジェクト指向に対するシンタックスシュガーに過ぎないので、
経験のない人間が下手に使うと、どう再利用すればいいのか分からない、ゴミ山のような小さいクラス群と
環境によって内容が違う定義ファイルに道を迷わされる。。。
労働集約型産業やりたいのなら、COBOLとか実は良い言語だぜ?
455デフォルトの名無しさん
2012/08/18(土) 05:07:00.19 DIコンテナ使ってるのに結局ダウンキャストしてるとか、
それを避けるために(?)インターフェースと実装を1:1にして、同時にメンテしていくとか
そんな使われ方をしている所にしか出会ったことがないんで、考察が足りないかもしれないけど
DIコンテナって、上手く使えば便利なのは分かるんだけど、
publicメソッドの一つも足すことができないし、拡張性が落ちる気がするんだよね。
上の例みたいに、インターフェースと実装を1:1にすればできるけど、
その状況って単に、DIコンテナ使いたいからインターフェースと実装を分離してる感じになっちゃってるし、きもい。
作って終わりならいいけど、拡張をしていく可能性を残すなら、
そう簡単に導入できるものじゃない気がするんだよなぁ。
それを避けるために(?)インターフェースと実装を1:1にして、同時にメンテしていくとか
そんな使われ方をしている所にしか出会ったことがないんで、考察が足りないかもしれないけど
DIコンテナって、上手く使えば便利なのは分かるんだけど、
publicメソッドの一つも足すことができないし、拡張性が落ちる気がするんだよね。
上の例みたいに、インターフェースと実装を1:1にすればできるけど、
その状況って単に、DIコンテナ使いたいからインターフェースと実装を分離してる感じになっちゃってるし、きもい。
作って終わりならいいけど、拡張をしていく可能性を残すなら、
そう簡単に導入できるものじゃない気がするんだよなぁ。
456デフォルトの名無しさん
2013/02/08(金) 12:54:44.22 DBfluteだのJBossだのJava界隈はまともに動かなかったりやる事増やしたりするゴミばっかだな
457デフォルトの名無しさん
2013/02/08(金) 13:10:11.56 http://event.seasarfoundation.org/sc2009white/viewAttachment.do?_pageName_=Session&_fileName_=sc2009white_s406_4_hot.pdf
これ読んでると色々馬鹿馬鹿しくなるね
これ読んでると色々馬鹿馬鹿しくなるね
458デフォルトの名無しさん
2013/02/24(日) 16:07:14.97 DIってsetter使えば要らないよね?
AOP目的で使ってる人いるみたいだけど、ならsetter+AOPで良くてDI不要じゃん
AOP目的で使ってる人いるみたいだけど、ならsetter+AOPで良くてDI不要じゃん
459デフォルトの名無しさん
2013/02/24(日) 16:40:11.43 DIすることとDIコンテナを使うことは区別するべきだと思う。
「setter使えば」が何を意味しているのかイマイチ判然としないけれども、setter使って
サービス等の実装オブジェクトをセットするという意味ならそれは他でもないDIだと思う。
DI自体はDIコンテナの使用の有無に関わらず有用な設計パターンの一つだと思うよ。
あとはブートストラップに実装のsetを列挙するかそれともDIコンテナ使うかの、注入作業
の実装方法の違いに過ぎないと思う。
注入するものとされるものが増えてきて、autowireなど規約による自動注入の類を使い
始めるとDIコンテナも便利だと思う。
「setter使えば」が何を意味しているのかイマイチ判然としないけれども、setter使って
サービス等の実装オブジェクトをセットするという意味ならそれは他でもないDIだと思う。
DI自体はDIコンテナの使用の有無に関わらず有用な設計パターンの一つだと思うよ。
あとはブートストラップに実装のsetを列挙するかそれともDIコンテナ使うかの、注入作業
の実装方法の違いに過ぎないと思う。
注入するものとされるものが増えてきて、autowireなど規約による自動注入の類を使い
始めるとDIコンテナも便利だと思う。
460457
2013/02/24(日) 20:24:51.85 理解が深まりましたm(__)m
461デフォルトの名無しさん
2013/02/24(日) 20:25:24.35 457 -> 458
462デフォルトの名無しさん
2013/12/28(土) 23:07:01.79 うん
463デフォルトの名無しさん
2014/03/02(日) 07:19:45.70 DIでインジェクションするクラスってさ
基本的にシングルトンになると思ってるんだけど
あってる?
基本的にシングルトンになると思ってるんだけど
あってる?
464デフォルトの名無しさん
2014/03/05(水) 21:59:28.30 >>463
何で?親インスタンス1に対して子インスタンス一つ出来るよね?
何で?親インスタンス1に対して子インスタンス一つ出来るよね?
465デフォルトの名無しさん
2014/03/06(木) 20:13:38.55 その親インスタンスも一個でしょ?
466デフォルトの名無しさん
2014/03/06(木) 20:28:00.99 謎が深まりましたm(__)m
467デフォルトの名無しさん
2014/03/06(木) 22:54:00.97 たいていのDIの実装が、シングルトンをデフォルトにしているっていうだけの話ではなくて?
インスタンス管理がHTTPコンテキストのものだと、シングルトンに見えて実際はDynamic Proxyが
インジェクションされていて、本当の処理はHTTPコンテキストに格納された個々のインスタンスへ
デリゲートされている、なんてものもあるし。
インスタンス管理がHTTPコンテキストのものだと、シングルトンに見えて実際はDynamic Proxyが
インジェクションされていて、本当の処理はHTTPコンテキストに格納された個々のインスタンスへ
デリゲートされている、なんてものもあるし。
468デフォルトの名無しさん
2014/03/15(土) 12:31:18.68ID:4evGY2gy jmockit使えるようになってからは、主だったビジネスロジック部分でのDIはなくてもいいんじゃないかという結論に辿り着いた。
もちろん全部不要って意味じゃないけど、自前でnewすることは怖いことじゃない。
なんていうか、今後を考えてもまず必要のないことが明確にわかるような、
意味のないDIの使い方をしているプロジェクト、多すぎると思う。
もちろん全部不要って意味じゃないけど、自前でnewすることは怖いことじゃない。
なんていうか、今後を考えてもまず必要のないことが明確にわかるような、
意味のないDIの使い方をしているプロジェクト、多すぎると思う。
469デフォルトの名無しさん
2014/03/15(土) 12:51:07.19ID:eSop4WYi 普通はデータベース・ファイルIO・外部システム連携部やAPI等をインターフェースにして
単体テスト時はモック、動作時にはDIで実装クラス注入というパターンだな
勘違いした人が全てのクラスに対してインターフェースを用意してDIとかやり始めると、
複雑度が跳ね上がって困ったことになる
単体テスト時はモック、動作時にはDIで実装クラス注入というパターンだな
勘違いした人が全てのクラスに対してインターフェースを用意してDIとかやり始めると、
複雑度が跳ね上がって困ったことになる
470デフォルトの名無しさん
2014/03/18(火) 08:14:10.97ID:tRXj2H8I やっぱり使える場所ってかなり少ないはずなんだよな
その辺はマルチスレッドを使うときのパターンに近似していると思う
DIコンテナの開発元や布教者がむやみにあちこち使わせるような
悪質なチュートリアルや宣伝をしているのが原因ではないだろうか
その辺はマルチスレッドを使うときのパターンに近似していると思う
DIコンテナの開発元や布教者がむやみにあちこち使わせるような
悪質なチュートリアルや宣伝をしているのが原因ではないだろうか
471デフォルトの名無しさん
2014/03/18(火) 11:02:39.52ID:SyPosiOD 使える場所は限られるが、ありがちなWebアプリだと、
手続き的に何度も書かなきゃいけないとこはだいたいカバーできるから、
普及してるんだと思われる。
勿論、何でもかんでもDIでというのはおかしいが。
手続き的に何度も書かなきゃいけないとこはだいたいカバーできるから、
普及してるんだと思われる。
勿論、何でもかんでもDIでというのはおかしいが。
472デフォルトの名無しさん
2014/08/02(土) 11:50:17.01ID:1euMp4Dx >>463
インジェクションするインスタンスのライフサイクルを外部から設定できるのもDIの特徴の一つだよ。
考えられるライフサイクルは、以下とかかな
シングルトン
DIするごとにインスタンス生成
同スレッド中で同インスタンス
Webアプリケーションの場合、セッションやリクエストもあるね。
インジェクションするインスタンスのライフサイクルを外部から設定できるのもDIの特徴の一つだよ。
考えられるライフサイクルは、以下とかかな
シングルトン
DIするごとにインスタンス生成
同スレッド中で同インスタンス
Webアプリケーションの場合、セッションやリクエストもあるね。
473デフォルトの名無しさん
2014/09/21(日) 11:50:29.01ID:QmbMYAkp おちんぽインジェクション!
474デフォルトの名無しさん
2014/11/04(火) 12:10:06.56ID:tJPjGfpS >>469
難易度って意味だと、
自動テストって何ですか、単体テストは画面から動かしました!
ってなのが蔓延ってて、
○○機能サービスってクラスに
viewの状態から、SQLIDを含んだ発行メソッドや、ユーティリティ以外の全メソッドが乗ってる
そんな現場だと、例外なく全てである
って言い切っちゃった方がすんなり行きそう
それが新しいルールだってことにして
難易度って意味だと、
自動テストって何ですか、単体テストは画面から動かしました!
ってなのが蔓延ってて、
○○機能サービスってクラスに
viewの状態から、SQLIDを含んだ発行メソッドや、ユーティリティ以外の全メソッドが乗ってる
そんな現場だと、例外なく全てである
って言い切っちゃった方がすんなり行きそう
それが新しいルールだってことにして
475デフォルトの名無しさん
2015/12/19(土) 10:22:39.99ID:TihVvVxJ プログラマはMacを使ってるってマジ?
http://hayabusa3.2ch.net/test/read.cgi/news/1450395043/
http://hayabusa3.2ch.net/test/read.cgi/news/1450395043/
476デフォルトの名無しさん
2015/12/19(土) 15:44:40.26ID:HaKKFtRZ どこの部分をポリモる必要があるかちゃんと線引きしておかないと、DI導入してもただうっとうしいだけになるんだよな。
477デフォルトの名無しさん
2016/01/26(火) 21:19:13.12ID:96cI6c2/ 仕様がふわふわしてる時には自衛の為にDIしたほうがいい
478デフォルトの名無しさん
2016/03/29(火) 08:59:52.53ID:/c8bAcK4 サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート
479デフォルトの名無しさん
2016/04/29(金) 22:34:59.65ID:h96wBy+l Unityでdecoratorパターンしたい場合はどういう風に設定を書けばいいんでしょうか
例えばコードで書くとこんな感じです
var co = new UnityContainer();
co.RegisterType<ILogger, Logger>();
co.RegisterType<IFoo>(new InjectionFactory(
c => new LoggingFoo(new Foo(), c.Resolve<ILogger>()
));
これをコードではなく設定ファイルで定義したいです
例えばコードで書くとこんな感じです
var co = new UnityContainer();
co.RegisterType<ILogger, Logger>();
co.RegisterType<IFoo>(new InjectionFactory(
c => new LoggingFoo(new Foo(), c.Resolve<ILogger>()
));
これをコードではなく設定ファイルで定義したいです
480デフォルトの名無しさん
2016/07/08(金) 23:15:32.94ID:oeqNGrjL 39 仕様書無しさん 2016/07/08(金) 23:11:07.46
Oracle、Java EEから手を引く可能性も
http://s.news.mynavi.jp/news/2016/07/04/261/
Oracle、Java EEから手を引く可能性も
http://s.news.mynavi.jp/news/2016/07/04/261/
481デフォルトの名無しさん
2016/09/23(金) 00:09:39.76ID:wN+HuPEq そもそもClass定義自体がファクトリのはず
なのに何故、いちいちフレームワークの助けが必要なのか。
DIは今後の言語で言語仕様自体に組み込まれ
消えていくだろう
なのに何故、いちいちフレームワークの助けが必要なのか。
DIは今後の言語で言語仕様自体に組み込まれ
消えていくだろう
482デフォルトの名無しさん
2016/09/23(金) 12:46:27.71ID:pEruE6c3 汎化が過剰だからフレームワークの助けが必要になるんじゃないかと
コードを自動生成したほうがマシな気がする
コードを自動生成したほうがマシな気がする
483デフォルトの名無しさん
2018/05/23(水) 23:01:01.60ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
6IEJF
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
6IEJF
484デフォルトの名無しさん
2018/07/04(水) 23:07:25.92ID:gFgZc5FG 9WT
485デフォルトの名無しさん
2018/10/12(金) 17:13:29.26ID:5jm0P0/q 保守
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【日本人の旅行離れ】国内旅行すら行けなくなった……オーバーツーリズムだけじゃない 旅行者減少の異常事態 [ぐれ★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★12 [蚤の市★]
- 中国の渡航自粛要請1カ月 大阪の観光バス予約ゼロ、東北にも波及 [蚤の市★]
- 【神戸】エレベーター「かご」なく男性医師が転落死 大手「三菱電機ビルソリューションズ」の担当者、安全装置切り放置か [ぐれ★]
- 【福岡】「人が道路に寝込んでいた。顔面から出血し、うなり声をあげている」 福岡市中央区で男性はねられ死亡 タクシー運転手逮捕 [ぐれ★]
- 女性天皇「賛成」69%、将来の皇位継承「不安」68%…読売世論調査 [蚤の市★]
- 高市、メガソーラー廃止。環境破壊が社会問題化 [792147417]
- クリスマスに何かする「予定なし」は54%。 過去最高水準に。ケーキの値上げもあって節約志向へ [663766621]
- 他人のリクエストで自分の癖と異なる絵を上げる絵師いるじゃん?
- なぜ日本人はフード被らないの?寒いのに
- ワイが考えてるキャラ当ててみろやwww
- 🏡おい!返事しろ︎︎!知的障害者!
