Java Spring Frameworkを語るスレ

このエントリーをはてなブックマークに追加
http://www.springframework.org/

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

語るべし。
ばっかじゃねーの。まとめて一つのスレでやれ。あほ。
フレームワーク、ライブラリなんてJavaより多い言語はいくつもあるっつーの。
あほ。
Java Summer Framework
うほっ!!!いいスレッド。。
本家
http://www.springframework.org/

Rod Johnson著「実践J2EE システムデザイン」
http://www.amazon.co.jp/exec/obidos/ASIN/4797322888/

TheServerSide.com - Introducing the Spring Framework
http://www.theserverside.com/resources/article.jsp?l=SpringFramework

Rod Johnson著「J2EE Development without EJB, Expert One-on-One」2004年5月発刊予定
http://www.amazon.co.jp/exec/obidos/ASIN/0764558315/

SourceBeatの電子出版書籍「Spring Live」
http://www.sourcebeat.com/TitleAction.do?id=7

「Spring Live」サポート用Blog
http://www.sourcebeat.com/roller/page/[email protected]/Weblog?catname=Spring%20Live

Struts + Hibernate + Spring Framework のWebアプリ 作者は「Spring Live」の著者
http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse

Spring Frameworkを使用したJDBCプログラミングチュートリアル(作成途中)
http://www.buggybean.org/tutorials/Spring_JDBC_tutorial.pdf
eclipseプラグイン「Spring UI for Eclipse」
http://springui.sourceforge.net/

Spring FrameworkのWiki「Spring Pad」
http://wiki.bmedianode.com/Spring/?FrontPage

Spring Frameworkを利用した蔵書検索アプリケーション
http://www.commentout.com/people/takai/memos/booksearch-1.0-alpha-1/

PicoContainerのプレゼンテーション資料日本語版(IoCの説明がわかりやすい)
http://cvs.picocontainer.codehaus.org/viewcvs.cgi/*checkout*/site/presentations/JavaPolis2003_ja.ppt?rev=1.1&root=picocontainer
利点:
Spring Frameworkを使うことによって、複数のコンポーネント間の依存性が下がる。
よって、Unitテストがし易くなったり、コンポーネントの自由な結合・組み合わせが可能となる。

XMLファイルを設定ファイルにしてBeanを生成することから、一見CommonsのDigesterやBeantilsと
同じじゃないか、と思ってしまうが、そうではなくUIからDBアクセスまで全てのレイヤをサポートし
レイヤ・ライブラリ間のシームレスな連携が実現できるところが最大の特徴。

欠点:
Bean定義をXMLに書かないといけない為すぐにXMLが肥大化してしまい、Strutsのstruts-config.xmlと
同じような悩みを抱えてしまう恐れがある。
85=6=7:04/02/26 23:18
自分が振れるネタはとりあえずこんなもんかな。

>>1さん
スレ立ておめ
Picoとの比較もありだよね。 >>1さん
Springのほうが高機能なのに、Picoのほうが
もてはやされている気がするのはなぜだろう。
漏れの気のせいかも知れんが。
SpringでPicoをつかうってのもあったような。
ソースを忘れてしまったが。
Type2,Type3もまいらどっち派?
>>9
> SpringでPicoをつかうってのもあったような。
SpringじゃなくてHibernateだった。
125=6=7=8改め春一番:04/02/27 12:58
>>9さん
自分なりの意見を。

Pico ContainerはType2, Type3両方をサポートしている。SpringはType3のみ。
よって使い勝手としてはPico Containerに軍配が上がる。

でもそれはIoCフレームワークとしてみた観点のみ。
Springはそれ以外にJDBC(O/Rマッピング)、メール、Webプレゼンテーション、AOP
と様々なレイヤをサポートしている為、1つのアプリケーションに一貫性を持たせるには
やはりSpringがいい選択だと思う。(個人的にはWeb周りはまだまだという感じだが。)

ネタ振りとしてリンクもはっとこう。

IoCとは何か、DAOパターンへの適用、PicoContainerとSpringの比較
http://today.java.net/pub/a/today/2004/02/10/ioc.html

HiveMindとSpringの比較
http://javatapestry.blogspot.com/archives/2004_02_01_javatapestry_archive.html#107757766902671389

>>10さん
Type3かな。Type2のコンストラクタベースは深く突っ込んで使うには少々使いづらい。
XMLの肥大化問題はもっとこの辺が流行ってくれば、ツールが対応してくれるでしょ、と楽観。
13春一番:04/02/27 12:59
>>11
HibernateでPico??

Spring + Hibernateであれば幾つかリソースがあるね。

Hibernate - Data Access with the Spring Framework
http://hibernate.bluemars.net/110.html

Spring AOP with Hibernate
http://www.springframework.org/docs/wiki/Spring_AOP_with_Hibernate.html
>>12
Type2とType3が逆じゃない?
Type2がSetterベースで、Type3がコンストラクタベースだよね。

それから、Spring Framework 1.0 M3以降はType2に加えてType3 IoCも
サポートされています。Type2(Setterベース)の場合、

<bean id="userManager" class="net.2ch.dao.UserManager">
<property name="dataSource"><ref bean="myDataSource"/></property>
</bean>

と書いていたものがType3(コンストラクタベース)では、

<bean id="userManager" class="net.2ch.dao.UserManager">
<constructor-arg><ref bean="myDataSource"/></constructor-arg>
</bean>

のようになる。
この場合、UserManagerインターフェースのコンストラクタのシグネチャは
public UserManager(DataSource dataSource);
という感じで。
15春一番:04/02/27 14:18
>>14
_| ̄|○
ちょっとこっちに参戦してください。
http://pc2.2ch.net/test/read.cgi/tech/1068207164/542-543
>>16
参戦してきますた。
それにしても、AOPすれも多すぎだし、
各スレの依存関係が強いね。
つかrc2リリースくらい書こうよ
RCになってから、いろいろ変えんなよ。
>>19
リリース後はAPI変えないみたいなこといってたから
かけこみで変更しとけってのががおおかったんじゃないの?
web.xmlにapplicationContext.xmlを定義する方法で、Webアプリで使ってるんだけど
稼動中にapplicationContext.xmlを編集した後、内部でrefresh()を呼び出しても
全然内容が更新されない。

何でか分かる人いる?(てか、そもそもrefresh()がそういう用途にあるのかも分からん)
22デフォルトの名無しさん:04/03/09 00:38
保守
>>21
そのrefresh()ってどのクラスにあるの?
m4では見つからなかったけど。
rc2落としてみるか。
>>23
AbstractApplicationContext っす
>>24
コードを見る限りは、refreshBeanFactoryで、
更新されそうだけど。
デバッガで追うしかない?
261さん:04/03/10 22:03
正直レスついて嬉しい。ワーイ
なんかねたなーい?

そういえば、Spring MVCってどうよ。
WebWorkのほうがいいって香具師もいるが。
Spring単独の話題より、比較の方が特徴が分かって面白い。
>>27
SpringのMVCはフレキシブルすぎて「MVC初心者」には使いこなせない感じ。

FormやValidatorやらも一通り揃ってて機能的には申し分ないんだけど、
多人数のプロジェクトで使おうとするとSpringのMVCをベースにもう一段
自分用MVCフレームワークを作るような構造にしないと、StrutsのActionで
ヒーヒー言ってるような人たちにはつらいと思う。
IoCはもう古い!これからはDependency Injectionだ!
「Inversion of Controlコンテナと Dependency Injectionパターン」
http://www.kakutani.com/trans/fowler/injection.html




                         ・・・ごめんなさい。名前変えただけです。
>>29
正確にいうと、type 2とtype 3がdependency injectionね。
JBossAOP って IoC コンテナですか?
ってか IoC と AOP ってどんな関係? 全然違うもの?
全然違うモノ、
IoCはパターンのひとつ、AOPはある考え方と実践のための技術。
IoCもAOPに使えるかもしらんが、とにかく別物。具ぐれ。
あいまいな質問で申し訳ないが、SpringとWebWork2、どっち選んだらいいと思う?
比較資料希望。
34デフォルトの名無しさん:04/03/21 19:33
>>33
比較大将間違ってないか、それ?
35デフォルトの名無しさん:04/03/21 20:55
SpringとWebWork2の比較してるのは知らないな。
サンプルソースでもみて決定するのはいかが?

Spring
http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step.html
WebWork2はWEB+DBPressで特集されてたのでそちらを参照。

だけどSpringのWEBアプリ用クラス使うより、StrutsやWebWork2と組み合わせるほうが一般的みたいよ。
Spring、Pico、Hivemind、XWork、S2 を比較した場合どんな感じですか?

Spring は元祖、
Pico はお手軽、
Hivemind は Tapestry サクーシャ作、
XWork は Webwork2 の一部、
S2 は日本人作

だと思うんすけど、これはここがイイ!とかあったりしますか?
やっぱ Spring がいいんかな。S2 は JTA とかついてきますが他のにも
ついてきたりしますか。
>>36
自前コンポーネントの管理が中心ならPicoが手軽でよい。
HibernateやJTAやVelocityまで巻き込んで管理したいならSpringが便利でよい。
自前コンポーネントの管理が中心で、かつMVCフレームワークが決まってなければ
WebWork2/XWorkというのも良い。
日本語ドキュメントが皆無でもよければHiveMindでよい。
即、実運用に入るというのでなければS2も期待大。

という感じだ。
>>37
Spring が実用向きってことですね。ところで
Spring は S2 みたいに JTA を使うための JTM 付いてますか?
ttp://homepage3.nifty.com/seasar/doc2/dbcp.html

別に JTM サポートする AP サーバか JDBC ドライバが必要ですか?
ってか自分で調べれないくらい英語弱いので S2 待ったほうがいいのか・・・
>>38
APサーバもしくは、JTAをサポートするTransactionManagerと
ConnectionPoolが必要。
>>39
ありがトン! JTM が無い Tomcat なので少し先の S2 で検討します。
Tomcat + Tyrex or JOTM + DBCP + Spring とかは連携があっしには
難しそうなので置いときます。
>>40
レポート期待してる。
Jakarta Projectスレは盛り上がらないときもあれば盛り上がるときもある。
Eclipseスレも最近のところほとんどレスが減った。
それでも週に一回くらいのレスはつく。
ということで無理して立てたスレに文句を言う必要も無い。


このスレはTepestryスレやJakarta スレ並みに
盛り上がると思われたが盛り上がらなかった。それだけのことだ。

しかしおれはこのSpring frameworkというものをはじめて知った。
ちょっくら拝見してみるか。
Spring Framework もそうだが、PicoContainerもXWorkも
J2EE専用じゃないぞ。どっちかっていうと逆だ。
Swingアプリケーションにだって、アプレットにだって適用可能だ。

58 名前:デフォルトの名無しさん 投稿日:04/03/25 22:55
乱立してるから避けられてるんでしょ。
標準化されたら変わるのでは。

59 名前:デフォルトの名無しさん 投稿日:04/03/25 23:35
だれか、JCPにIoC Container Service APIの策定を提案してみたら?

60 名前:デフォルトの名無しさん 投稿日:04/03/25 23:36
IoCコンテナの考え方って、Javaに限った話じゃないよねえ?
CやC++でも同じものがあっても便利なんでわ。

61 名前:デフォルトの名無しさん 投稿日:04/03/25 23:58
>>57
http://wiki.bmedianode.com/Spring/?Spring+Framework
にさ、

> Spring Framework(単にSpringと呼ばれることもあります)は、Rod Johnson氏の
> 著書Expert One-on-One J2EE Design and Development(邦訳は実践J2EE シス
> テムデザイン)の中で紹介されたコードをベースにしたJ2EEアプリケーションフレー
> ムワークです。

って書いてあるからJ2EE用だと思っていた。へぇー。

解説を読む限りはEJBへの依存度を減らしやすくなるという
ことからJ2EEなどの敷居を下げるってイメージが見える。
54 名前:デフォルトの名無しさん 投稿日:04/03/25 22:38
>>2
Java以外のフレームワークやライブラリは有名じゃないとか有償で高価でだれもてをつけられないとか
なんらかの理由があるのかもしれんよ。


55 名前:デフォルトの名無しさん 投稿日:04/03/25 22:40
よく見たらJ2EE用フレームワークか。
そりゃそうだ。敷居が高すぎてなかなか盛り上がらないんだよJ2EE/EJB関連スレは。
JBossスレもなかなか盛り上がらない。
J2EEは見たからに難しいから。  
2chねらでJ2EEを極めた香具師ってそうそういないと思われ、なんだな。


56 名前:デフォルトの名無しさん 投稿日:04/03/25 22:45
J2EEが敷居が高いつか泡沫案件には洋ナシってのはわかるが、
このSpring Frameworkは、J2EEを簡単に
使えるようにしてくれるもんじゃないのか?
Mission Statement
  We believe that:
     ・J2EE should be easier to use
  We aim that:
     ・Spring should be a pleasure to use
とあるし。よく知らんけど興味だけはあり。ageてみる。
>>61
IoCコンテナの主な役割は、Abstract Factoryの外部化、とでもいえばわかりやすい
のかな?J2EEのBusiness Delegateなんかの生成を行わせることが多いみたい、という
ことでJ2EE用と宣伝されるみたいだけどさ。
レイヤー間の依存関係を減らしたいと思う境界全てで有効な仕組みデス。
JDBCやJNDI、JAXPのAPIが、実装から切り離されて隠蔽されているのは多分知ってい
ると思うけど、同じようなことがしたい場所全てで、こういう仕組みを使うと簡単に
実現できるわけさ。


63 名前:1の人 投稿日:04/03/26 01:17
タイトルを"IoCコンテナを語るスレ"にでもしとけば、変なアンチが寄って来ないですんだかな。
ゴメンナサイ。


64 名前:デフォルトの名無しさん 投稿日:04/03/26 01:24
そうだね。次スレはそういうスレタイで。


65 名前:デフォルトの名無しさん 投稿日:04/03/26 03:05
IoCってのは汎用AbstractFactoryってことでええの?
Products(Abstract/Concrete)は自分たちで作って登録して、
使う側はConcreteProductには触れないですむと。

なんか名前があってない気がするな。
漠然とCallBackみたいなもんかと思ってたよ。
>>65
名前はそのうち、DI(Dependency Injection) Containerになる余寒。
Factory + DependencyInjection (+ AOP)だね。
具象クラス同士がお互いに依存しないようにできるから
テストがしやすくなり、メンテナンス性もあがる。

でもSpringって巨大だね。
Hibernateとのインテグレーション機能以外を
使ってる香具師いる?


67 名前:デフォルトの名無しさん 投稿日:04/03/26 14:08
>>62
Abstractory Factoryって
部品追加するとすべての実装工場にまで部品を追加しないと
いけないので良い印象がない。
このスレ復旧完了。
スレ違いなネタ(Javaスレ大杉とか)はカットしますた。
>>47
49デフォルトの名無しさん:04/04/09 15:22
SEASARとどっちがいいんですか?
それとも競合するものではないのですか?
>>49
んなもん、世界中にユーザのいるSpringにきまっとろーが。
51デフォルトの名無しさん:04/04/11 12:55
Seasarでいいよもう。
Springいんない。
Seasarの開発者が
>AOPをS2独自ではなく、http://aopalliance.sourceforge.net/に
>準拠させようと思います。これで、S2のインターセプタ(Advice)が
>Springでも使えるようになります。
って書いてるね。
AOPアライアンスなんてのがあるんだったら競合するわけじゃない気がしてきたんだが
まあWebSphereとWebLogicが競合なんだからSpringとSeasarもその意味では競合か。
>>52
どうみても、かぶってる(競合している)フレームワークどうしだと思うが。
5449:04/04/14 11:14
日本ではSeasarということでFAですか?
Seasarにいっぴょう
そんなにSeasarっていいのか。
Spring + Hibernate みたいなことが簡単にできる?
ちょっと調べてみないといけないなぁ。
>>56
S2Hibernateってのがあるみたいだね。
>56
透過的トランザクションは対応してる。
S2Hibernateのソース読むとわかるけど、S2Hibernate自体はあんまりたいしたことはして
なくてSessionとSessionFactoryへのBridgeをしてるだけ。
Springみたいなサポートクラスはないのは少し残念。

両方使ってみたけどもORMとの組み合わとからいろいろとSpringの方が便利だな。
プレゼンテーションとかの連携もこれからみたいだし。
他のフレームワークとの連携度でみるとSpringが一歩抜け出してると思われ。
Spring>Pico>Seasar
という感じだけど、どう?

ただ、Seasarは敷居が低いんで、IoCはこれから始めるっていう人にはかなりいいと思う。
>>58
Springみたいなサポートクラスって何?
HibernateTemplateのことなら、SeasarはSessionを
オープン・クローズする必要がないし、
HibernateExceptionもラップしてくれるから
おなじようなもんだと思うけど。
このスレはSeasar2にIOCされますた。
国際オリンピック委員会
62デフォルトの名無しさん:04/04/21 21:46
Tapestryは3.0 Finalが出ても、ドキュメント類が貧弱。

ってことは、その弟分のIoC、HiveMindも、期待できないのかもな。
S2のPlugin開発がはじまったみたい。
http://www.mobster.jp/wiki/view.jspa?pid=S2Plugin
>>62
作者謹製のTapestry in Actionを買え!っつーことなんでしょうね。
(そういうビジネスモデル?)

すぐにHiveMind in Actionも出る事でしょう。
>>64
完成して(枯れて)ないのに Tapestry in Action なんぞ買えん。
実際に普及するんだったらブラッシュアップされて細部が変更され
Tapestry in Action の内容は過去のものに。

Tapestry は作者のオナニー。
なんかEJB3.0の動向やら、Web上の毎評判聞くだけだと
もの凄い有用かつ将来性のあるフレームワーク(&Iocコンテナ?)っぽいけど
スレが伸びないのは何故?やっぱどっか問題があるのか?
はたまた先進過ぎて使ってるヤシがいないのか...
67デフォルトの名無しさん:04/05/11 22:32
と言う事で揚げてみる
>>66
日本で本気で使っている人をあまり聞いたことがないね。
JavaWorldで特集されるらしいから、また変わるかも。
>>68
PicoもSpringもバリバリ普通につかってるよ?
使ってないのってあなたのまわりだけじゃないの?
>>69
こんなもの使ってるのってあなたのまわりだけじゃないの?
picoは知らんがSpringはなかなか良いぞ。 フレームワークとの関係を薄く出来るから
他のヤツとも組み合わせやすいし、ダメな部分だけ除外しやすい。

Tapestoryは公式ドキュメントすら殆ど無くて、3.0にもなってまだプレビューリリースみたいな
感じだから、まだ変わっていきそうな予感。 あんまりスマートじゃない部分も多いし。
>>66
EJB=敷居が高い、という印象を拭いきれないから
73デフォルトの名無しさん:04/05/14 12:32
みんなJBossにしか興味がないから
74デフォルトの名無しさん:04/05/25 22:03
おいお前らJava Worldで特集組まれてますよ
でも結局EJB3.0+Struts+JBossAOPらへんに呑まれそうな予感
JBoss厨がいるな。JBossAOPが呑むなんてこたないだろう。
7674:04/05/27 21:48
>>75

激しく例えが悪かったが
JBossAOP「らへん」ね
別にAspectJでもいいんだけど。と言うかそっちの方が適切ね

要はSpringって全部入り(+他と連携)目指してるみたいだけど
だったら各層専門のフレームワークを寄せ集めた方がいいんでないの?
と素人目に思った訳だがどうだろう?

教えてSpringマスター!!
>>76
各層専門のフレームワークを寄せ集めて集中管理するのがSpringですよ。
>>77
なるほど、そう考えると便利な気がしてきました
「フレームワークのためのフレームワーク」的発想(であってる?)ですかね
79デフォルトの名無しさん:04/06/08 03:30
PicoContainer 1.0 final age
80デフォルトの名無しさん:04/06/08 20:52
pico tte nadesuka?
doko de jouhou nyushu dekirunodesuka?
81デフォルトの名無しさん:04/06/08 22:57
すみません、どなたかWEBWORKと
SUN APP SERVER 8
上手に合わせて使う方法御存じないでしょうか。
当方EJB(CMP)とWEBWORKを利用して、
プログラミングしたいのですが。
ANTの使い方覚えるよりも、APP SERVER
付属のDEPLOYTOOLを使いたいのです。
御存じの方がいらっしゃいましたら、どうぞよろしく
お願いします。
マルチ
DeployToolなんて、EARだのWARだのをデプロイするだけじゃないのけ。

EARやWARを作成できれば、Antでビルドしようが他を使おうがどうでも
いいんでないの。Ant以外でビルドをする仕組みを今から作るなんて、
ヒマダナオイ、とおもうが。
strutsとの連携ってどういうこと?
Actionクラスを普通にstrutsで定義して、
その中でbeanFactoryからDAO取得とか?
>>84
普通はActionからService呼び出して、その中でDAO使う。
当然、ServiceとDAOはSpringのContextから取得。

要は今までEJBを用いていた所をSpringで差し替えるだけ。
さらに、AOPを用いて各層の間に共通処理を差し込めば尚良し。

全然盛り上がってないのね…日本だとS2推しなの?
漏れはS2推しだなー
SpringやS2などのDIコンテナって局所的に盛り上がってるみたいだけど、メインストリームになるかねぇ?

POJOをプラモのごとく自由に組み合わせてシステム構築って魅力的ではあるけど、コンテナ独自機能も結構多いし。

コンテナ乱立で総崩れの可能性が高いような気がする。
>>87
コンテナ独自のインターフェースが規定されているのはSpring。
S2はそんなことないよ。
S2は取り巻きの盛りあがり方に引いちゃうな。
Springはロッドジョンソンの表紙に引いちゃうな
>>89-90
ちゃんとものを見ような
>>89-91
なずななのはななもないのばな
日本人ならSEASAR使えよ。
日経に比嘉氏の記事が出てたな
Spring使えネ、っていってたな。
96名無しさん@そうだ選挙に行こう:04/07/11 18:16
正直S2はひが氏以外に大した人材がいない(いても強くコミットしてない)
から先は無いと思う。

それに、Spring作ってる方は「Seaserには負けねー」とは言わないだろうな。
器が違うというか、「オープン」のスタンスが違うと言うか…。
で、>>96から見てSpringはどうなのさ
IoCコンテナ作ってりゃ大なり小なりSpringは意識するんじゃないのかな
それは仕方ないことだし別に悪いことじゃないと思うけどね
JBossだって他のJ2EEサーバには負けねーってノリだけど器が小さいとは思わない
似たようなもんだろ
>>98
JBossは、自作自演してたりするけどな。
100get
101デフォルトの名無しさん:04/07/16 21:02
>正直S2はひが氏以外に大した人材がいない(いても強くコミットしてない)
>から先は無いと思う。

最近開発を(一部)分担したらしいが、それがうまくいくかどうか。
失敗すればHORBの二の舞か。
HORBってあったねぇ。

あれの失敗の原因って何だろ。

・開発者1人に依存しすぎ、開発者発病であぼーん
・そもそも分散オブジェクトに需要がなかった
OMG様のCORBAとSUN本家のRMIの2強がいちゃあ、
黄色い猿が作ったモンが広がる余地はないだろ。
>>102
標準性が必要な分散オブジェクト技術としては、弱すぎた。
105103:04/07/17 00:05
あぁ、それと、当時はまだgoogleもなく、常時接続も極めて少なく、インターネット上の情報が少なかった
今みたいなインターネットありきじゃなく、雑誌の情報が主で、プロモーションができてなかったんじゃないかと。

今であれば、それなりに使えたかも。
とりあえず情報少なすぎた。
HORBってclassファイルのバイトコードエンジニアリングでスタブを生成してなかったっけ。

今はそこらじゅうのAOP対応コンテナでやってるけど、当時としては画期的だったような。
>>101
優しいなもまいは。そうやって使いもしないプロダクトにまで気を使ってやるもまいの優しさが報われるのを祈っているぞ
108デフォルトの名無しさん:04/07/17 07:34
>>107
どうも。
とりあえず生暖かく見守ります。
109デフォルトの名無しさん:04/07/20 10:13
Springで質問です。

JDBCTemplate.query(String,RowCallbackHandler)というメソッドで
RowCallbackHandlerインターフェースの実装を渡すと、
ResultSetの件数分だけRowCallbackHandlerのprocessRow(ResultSet)が
呼ばれるんですが、これってデータがものすごい数あった場合、
ものすごい回数呼ばれるじゃないですか。

それって性能的にどうなんでしょうか。一回のprocessRowの中でwhileループ
まわしてすべて終わらしてしまうのはよくないですか?
111デフォルトの名無しさん:04/07/21 22:38
Seasarのサイトを見てみた。
「易しさと優しさ」がテーマだと書いてあった。
ダウンロードページを見てみた。
頭のいい人が考える「易しさと優しさ」っていうのは、所詮あんなもんなんだ、と思った。
選択肢が多いことは即ちわかりにくい、という大原則をわかってないらしい。
何ダウンロードすればいいのか、わからない。

あぁ、わかりやすさはテーマではないのか。
わかってる人に易しく優しければいいんだな。
彡ミミミミ彡彡
巛巛巛巛彡彡  < こいつマジでアホやな
         i       ____________
   ⌒   ⌒ |       | ___________
  -・=- , (-・=-        | |
  ⌒ ) ・ ・)( ^ヽ      | |
   ┏━━┓ |      | |112 名前:デフォルトの名無しさん
   ┃ヽ三ノ ┃ |.      | |   選択肢が多いことは即ちわかりにくい
.    ┗━┛ ノ        | |   ,ィー-ーュァ
`- 、 _ー-ーイ/.       | | / '`'`'`ヽ
`  ̄ l l  ̄ `ヽ、.      |/     ィソ
   ヽ ヽ     >ヽ   /     ,ノ________
    \ \  / ノ\/ヽ、_ ,,,ィ'"_________
 ン    \ `´ /  ン      /ニユニユニユニユニユニユニユニユ
   \  / /          /エエエエエエエエI ロエエエエエエ
>>112
その辺は多分どっちもどっち。
Springのようにすべてが取り込まれる方が良い人も
いるでしょうし、S2のようにコア以外は使う人に意志に任せる
というのもありだと思う。
個人的には必要なのは自分で選べた方が良いけどね。
>>114
無用に古いバージョンがある。
っていうか、本体が一番下にあるのが・・・。
せめてS2本体は別ページに置くか、トップページで最新版へのリンクを明示しておくか。

私的にはMaven使ってビルドするサンプルプロジェクトあれば十分だと思うけど。

(サンプル落としてビルドしたら依存関係を持つプロダクトを全部落としてくるようにする)
トップページではDIコンテナとかAOPがなんのことかわからないとSeasarがなんなのかわからんしね。
119デフォルトの名無しさん:04/07/22 20:51
頭のいい人が「やさしい」といっても、ふつうの人は理解するのは大変。
そういうことでしょ。
>>119
「わからない」ということがどういうことかわかってないと、「わかりやすい」は難しい。
あの人たちの周りには、「わからない人」というのはいないし、寄ってこないだろうからね。
っていうか、「日本語で書いてある」「ドキュメントがたくさんある」「設定ファイルが単純」ということをもって「易しい」とか「優しい」っていってるだけだね。
「やさしさ」を重要視してるというのなら、「やさしさ」のためにどういう活動や管理をしているか、聞きたいもんだ。
GUIもないのに、「直感的」とか。

MSの、なんも考えずに使える環境とか見てると、やっぱすごく「優しさ」「易しさ」「わかりやすさ」考えられてると思う。
なあ、Javaってまだフレームワーク競争してんの?
>>120
具体的にS2の何がわかりづらいの?
123デフォルトの名無しさん:04/07/23 01:40
>>81
Apache Mavenならdeployが驚くほど簡単にできるぞ。
まあやってみい?
>>120
GUIのどこが直感的なの?
コマンド探そうとしてアイコンみてもただの絵にしか見えなくて(以下略)
またコマンドライン対GUIネタかよ
とりあえず>>120はvs.netでも使ってろってこった
126デフォルトの名無しさん:04/07/23 02:21
Maven + Eclipse + MevenideがあればVSドトネトなんていらない。
そもそもJavaにGUIを期待してる時点で(ry
Eclipseは例外。
それどころかこれからはすべてが例外になる。

Swingも著しく早くなってきた。
そしてJavaWebStartの本格普及。
Appletに取って代わる技術だ。
そしてJSFによるリッチクライアントだ。

そしてJiniテクノロジーの普及。
Jiniかよ!
>MSの、なんも考えずに使える環境
そのせいでクソシステムが乱造されてるわけだが
131デフォルトの名無しさん:04/07/23 05:57
>>120
その単純な設定ファイルを見て、実際にどう処理されるか、わからないと使えない。
こういう場合は、こう使え!という実例があればいいけど、当面期待できそうにない。
DIコンテナとかAOPを力説されても、ひいちゃうな。
>>130
それはクソシステムの乱造とは関係ありません。
AOPとかDIコンテナとかの便利さは使い方はすでにわかってる人に対して、こんな簡単に使えますよ、っていってるんだよね。

断っとくけど、Seasarはいいものだとは思う。わかってれば簡単だし。
周辺技術との連携も充実してきてるから、わかってれば使い易いし。
>>131
>DIコンテナとかAOPを力説されても、ひいちゃうな。
DIやAOPがSpringの売りですが何か?
Springの方は、「優しさを重視」とかインチキくさいこといいながらトップページに概要も書いてない、ということがないからおけ。
Springでいいじゃん。
>>132
だったら.netでちゃんとしたシステム作ってればいいだろ
何も考えずに使えるから何も考えずに行き当たりばったりに作る馬鹿が増えたんだよ
MSマンセーならJava使わなくていいじゃん
>>137
なにかにマンセーになるのは必須なのですか?
.netも、Javaとは別の性格でいいところはいいし、ちゃんとすればちゃんとしたものができるし、Javaでもちゃんとしなければクソシステムができる。
たとえMSマンセーであってもJavaがいいときにJava使うことはいいことだ。
で結局SpringはどうなんだYO
SpringのスレでMSを引き合いに出すのもどうかとおもうがな
統合開発環境として、MSのものはとっても優れてるから。
SpringなりSeasarなりも、いろんな技術を統合するためのフレームワークを目指してそうな気配だから、MSの開発環境並に統合された環境を用意してくれれば幸せ。
その辺はEclipseと比較すべきだろう
プラグインの取り組みはされているようだけど
そもそもEclipseがVS.netのように敷居が低いとは思えんしなあ
SEASERみたいなマイナーなやつに粘着するやつウザイ
もっとSpringの情報が欲しい。実際に仕事で使ってるやつとかの書き込みキボンヌ
Springも充分マイナーだと思う・・・

Springがマイナーとはいわないだろう
J2EEに与えたインパクトは大きいよ
>>142
そこでNetBeansですよ。
NetBeans4.0次第だけどな。
コンテナとIDEのはなしをまぜこぜにしてもなあ
>>145

各種O/R Mappingフレームワークに多大な影響を与えたと思われるWebObjectsは未だマイナーだと思われ。

って言うと信者が湧いてきそうだな。
その代わりTapestryとCayenneが注目されてるからいいんじゃない>WO
>>148
作ったところが作ったところだから。
どんなに広まっても、マイナーということになる運命。
151デフォルトの名無しさん:04/07/26 10:05
>>141
> 統合開発環境として、MSのものはとっても優れてるから。
M$のVS.NETなんてEmacs + GNU makeと比べたら大したことねえよ。

最近ではEclipseのプラグイン拡張が凄いことになっている。
しかもApache Antと併用できる上に、Apache Mavenという強力なプロジェクト管理ツールが登場した。
こいつもEclipseで使える。

しかもサーバ関係はM$は弱い。Javaのほうが強しだな。
WebServicesで.NETはJavaに敗れたわけだし。
Eclipseのプラグイン拡張は、結局それぞれのプラグインをちゃんと把握してないといけないので、MSの統合環境みたいに、なにも考えなくてもいろんな技術が統合されたものができるというわけにはいかない。
Emacs + makeの場合、ほんとにそれぞれの項目を理解していないと使えない。
それぞれの項目同士の連携は、自分で考える必要がある。

それぞれの部品単位ではMS以外の環境が優れているかもしれないけど、「統合」という点ではMSの環境が優れている。
EclipseもEmacsも、たくさんの機能がひとつの環境から使える、という程度でしかない。
153デフォルトの名無しさん:04/07/26 18:17
>>152
> Eclipseのプラグイン拡張は、結局それぞれのプラグインをちゃんと把握してないといけないので、MSの統合環境みたいに、なにも考えなくてもいろんな技術が統合されたものができるというわけにはいかない。
アホか。VS.NETにもプラグイン拡張があるぞ。
Eclipseのプラグインの把握はたいしたことがないぞ。
ちゃんとドキュメントは揃っているんだし。説明書をよめばだいたいわかる、どころか読まなくてもすぐに使えるんだし。
開発経験の無いド素人じゃあるまいし、エンジニアがそんなことも把握できないでどうするんだか。

> それぞれの部品単位ではMS以外の環境が優れているかもしれないけど、「統合」という点ではMSの環境が優れている。
> EclipseもEmacsも、たくさんの機能がひとつの環境から使える、という程度でしかない。

どこをどう統合したんだか。
VS.NETは2004になってからやっとリファクタリングなどのような
Eclipseに追いついた機能を手に入れたんだし。
>>153
WebサービスしらなくてもWebサービスつくれちゃうとか。
データベースのテーブルデータを取ってくるのをWebサービスにしてVBに貼り付けとか、簡単にできた気がする。
StrutsものにしてもHibernaterものにしても、それぞれが何かをちゃんと把握してないと使えない気がする。
Eclipseではなくて、Javaの問題なんだけど、そういったそれぞれのコンポーネントが縦割りで独立していて、連携をとるのに知識が求められる。
MSの技術は、それぞれは大したことないんだけど、それぞれを意識せずに連携できる。

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

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

それもどうかと思うが

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

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

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

このスレで一番参考になったレスかもしれない
>>157
SpringではSpringDAOとかSpringORMとかSpringMVCとかで
SeasarではS2DAOとかS2HibernateとかS2Strutsとかで

なんか、統一的な利用方法を提供しようとしてると思う。
基本的にJavaWorld2004/7の受け売り。
>>160

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

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

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

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

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

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

最初、翻訳文なんで原文が意味不明なのかと思ったら、「訳者注」とか
書いてあるんでびっくりした。
176デフォルトの名無しさん:04/09/14 01:49:20
えー、そうなの?
177デフォルトの名無しさん:04/09/15 11:50:42
岩谷か。。。orz
178デフォルトの名無しさん:04/09/15 19:32:38
>>171
よさげな本じゃな。
翻訳者には期待できないことを覚悟したうえで 
買って読んでみるか
179デフォルトの名無しさん:04/09/15 23:13:13
おれ岩谷の名前を意識したことなくて、今回あまりの訳注の多さに
びっくりしたんだが、ぐぐってみるとすごいのな。いやびっくり。
180デフォルトの名無しさん:04/09/16 10:34:40
軽快なJava読んだよ。
でも、はっきりいって Spring Frameworkスレの住人にとって、
今更技術的に役に立つことはないかも。

EJBっていけてないじゃんと思ってるけど、それを口に出すと
「お前がデキないだけ」
「お前のやってる案件が小規模なだけ」
と煽られてストレス溜まってるヤシが、自分の考えを再確認するには
いいかもしれない…
181デフォルトの名無しさん:04/09/16 20:14:22
こんな感じのリストを、プロパティじゃなく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>
182デフォルトの名無しさん:04/09/16 20:47:32
>>180
>軽快なJava読んだよ。

SF小説ですか?
183デフォルトの名無しさん:04/09/16 22:01:02
話題についていってない人はっけーん。
っつうか、10レス上くらい読めばいいのに。
184デフォルトの名無しさん:04/09/17 07:17:23
ぼけたつもりなんだろ>>182
いじめてやるなよ
185デフォルトの名無しさん:04/09/17 12:48:59
定義ファイルだけど、同じクラスの定義を何個も書くの面倒。
値だけ異なる複数のBeanを定義する方法ってあるの?
例えば、商品クラスのインスタンスを4つ作るみたいな。
186デフォルトの名無しさん:04/09/17 13:48:25
>>185
コピペ
187デフォルトの名無しさん:04/09/18 10:10:57
Springからファクトリでクラスをロードするとき、
プログラムからコンストラクタに引数ってわたせない?
HttpRequestわたしたいんですが
188デフォルトの名無しさん:04/09/19 03:21:59
>>187
あとで渡せばいいじゃん。
189デフォルトの名無しさん:04/09/24 04:57:45
Spring + StrutsのActionをテストするにはどうするのがいいんだろう?
StrutsTestCaseは使えないし。
190189:04/09/24 07:06:07
ごめん、StrutsTestCaseで問題なかった。
JNDIデータソースが使えないのが困るだけだ。
191デフォルトの名無しさん:04/09/24 22:54:26
>>185
共通プロパティを持つ基底ビーンを指定できたら便利だな。
192デフォルトの名無しさん:04/09/28 20:16:34
ProxyFactoryBeanを通すと生成されるオブジェクトが全部
シングルトンになっちゃうんですが
回避策はありますか?
193デフォルトの名無しさん:04/09/29 03:59:07
確認してないが、そんなことはないと思うが。
どっちかでsingleton=trueのままなんじゃないの?
194デフォルトの名無しさん:04/10/04 11:38:15
SeasarとSpringの違いってナニ?
195デフォルトの名無しさん:04/10/04 11:44:33
Spring
メジャー
関わる人が多い
ドキュメントが揃っている
たぶんメインストリームになる

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

このビーンはシングルトンです。
199デフォルトの名無しさん:04/10/05 20:16:52
>>198
xmlファイルはどうとでも分割できるから、一つの定義でかけるならできるんじゃないの?
200デフォルトの名無しさん:04/10/06 05:40:36
>>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ファイルが
ないよみたいなエラーが出るんですけど、やっぱこれって普通に無理なんですかね?
201デフォルトの名無しさん:04/10/06 09:15:05
>>200
普通に無理というか、普通にDIを誤解しているだけだと思われ。
Bean定義の継承ができるかどうか、という話だな。
欲しい機能だけど、できるかどうかは知らない。
いまリファレンス読んでる最中だから。
202デフォルトの名無しさん:04/10/06 12:28:34
parent属性使えばBean定義の継承はできるようだけど、listに追加というのは難しそうだな。
parent属性は型が違ってもいいので便利。
複数のparentを持つにはどうすればいいのかは不明。
203デフォルトの名無しさん:04/10/13 22:32:02
http://www.ozacc.com/library/
のSpring Framework Mail Extension使ったことある人いる?
Velocityを使ったVelocityMailMessageだけオリジナルを元にコピーする
コンストラクタがついてなくて困ってるんだけど。
Springでこれのインスタンス生成してビジネスロジッククラスにセット。
そのままVelocityJavaMailSenderに渡したら
マルチスレッドでごっちゃになってまう。

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

テストごとにテスト用のサービスクラスを変えることって
簡単にできますか?
Cactusと組み合わせた場合とかにデプロイごとに設定ファイル
変えるようなことになってしまわないですか?
205デフォルトの名無しさん:04/10/15 19:49:37
>>204
できる。
テストケースによって読み込むconfigファイルを変えるだけ。
206デフォルトの名無しさん:04/10/15 21:41:40
207デフォルトの名無しさん:04/10/16 11:48:47
じゃ漏れも貼っとくか
http://www.amazon.co.jp/exec/obidos/ASIN/1932394354
ってたけーよ!
208デフォルトの名無しさん:04/10/17 02:24:42
> 207

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

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

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

ドルになったときに購入するのがおすすめ。
211デフォルトの名無しさん:04/10/30 00:15:25
日本語版☆⌒ 凵\(\・∀・) まだぁ?
212デフォルトの名無しさん:04/11/01 12:58:29
英語版でいいから欲しいなぁ。。
213デフォルトの名無しさん:04/11/08 14:43:34
Introduction Advice でわけわかめな状態に。

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

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

 DI 廚 = マップ廚

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

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

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

別に、DIのしくみだけで十分同じことが実装可能なので必要ないけど、面白そうだから、作ってくれ。
218デフォルトの名無しさん:04/11/17 01:33:02
DIスレでやれ。
219217:04/11/17 01:37:04
気づかなかったんだよorz
220デフォルトの名無しさん:04/11/19 09:07:42
DIはある意味ではハシカみたいなもんじゃないかと思います。

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

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

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

生産性と品質に対して何の寄与もしないどころか、
足を引っ張るだけのフレームワークにハメられた僕は
別な何かが見える様になったと思います。
221デフォルトの名無しさん:04/11/19 09:25:06
ま、コピペもある意味ではハシカみたいなもんじゃないかと思うわけだな。
新しい技術に拒絶感を持つのはなにみたいなもんだろうか
222デフォルトの名無しさん:04/11/19 10:16:40
待て待て。
ここはネタスレのウォッチスレではないはずだ。
223デフォルトの名無しさん:04/11/19 13:49:20
ひっそりとヲチするのもいいかもね。
224デフォルトの名無しさん:04/11/24 13:35:30
DIスレからコピペ。

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

出てた。
約20ページの特集で、Spring+Hibernate、Spring+Strutsについての解説。
割りと初歩的な部分だけど、丁寧に解説されている印象。
230デフォルトの名無しさん:04/11/25 07:18:10
OGNLは諸刃の剣ということにしておこう。負け惜しみ的に。
たしかにオートバインディングは、名前でのオートバインディングしか使えないね。型によるのは怖い。
定義ファイルの分割については非常に疑問だね。インクルードができない、ということかな。名前空間のこと?
定義ファイルの肥大化に関しては、大規模プロジェクトで大規模に現れるような、シングルトンなクラスばっかりだと、XDoclet使えばいいということにもなるので、実質問題にはならないかと。
ただ、そんときは定義の継承を上手に使う必要があると思う。
逆にいえば、定義の継承ができないSeasar2では、XDocletを使ってクラスにBean定義を埋め込むのと面倒なことが起こるかも。
231デフォルトの名無しさん:04/11/25 08:47:40
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フレームワークへの依存関係を絶対もたせない」という方向での純粋主義みたいな
ところがありますね。後者の方が好みかなあ。
232デフォルトの名無しさん:04/11/25 09:05:32
クラスにはフレームワーク依存のメンバは現れないんだけど、最終的なアプリケーションとしてフレームワークに依存するから、好みの問題なんだよね。
結局フレームワークに依存するんだから、どこにその依存が現れるかは、どうでもいいと思う。
信じる道を行けばいいだけ。
ポリシーが一定してないのは困るけど、両者ともそういうことはないし。
233デフォルトの名無しさん:04/11/25 23:32:01
漏れも231的な感覚なんだけど、
クラスがフレームワーク依存しなければ、
「再利用しやすいかも」って思うんだよね。

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

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

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

>>242
Javaしか知らん奴には弱い型付けとか言ってもわからんのだろう
藻前は却下
244デフォルトの名無しさん:04/12/09 01:12:30
>>243
弱い型付けってなんですか?
245デフォルトの名無しさん:04/12/09 01:38:48
246デフォルトの名無しさん:04/12/09 01:47:22
>>245
「弱い型付け」で検索したら、Server Errorでますた(T-T)
247デフォルトの名無しさん:04/12/09 01:53:30
>>246
釣りはいいからさっさと調べろボケ
248デフォルトの名無しさん:04/12/09 01:53:33
型の指定が「無い」ことを「弱い型付け」と呼んでいいんですか?
249デフォルトの名無しさん:04/12/09 01:54:12
>>247
ほんとに出たんだって。
GoogleのServer Error
250デフォルトの名無しさん:04/12/09 01:58:01
ところで、Bean定義がコンパイル時に型解決できないのを、コンパイルとは別にBean定義の検証してもいいんじゃないの?っていう疑問は解決できませんでしたよ。
251デフォルトの名無しさん:04/12/09 23:51:24
設定ファイルの不備が実行時でないと検出できないってのは効率が悪すぎる。
で、自分はこんな感じでAntを使用してチェックしてるんだが、どうよ?

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

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

まぁ、DTDレベルの妥当性チェック + クラス名チェックなんで完全とまではいかないが、
実行時前にチェック出来るんで、だいぶ楽になった気がするな。
252デフォルトの名無しさん:04/12/10 00:53:16
>>251
だから、とりあえず設定ファイル読み込むだけのプログラム作って、それでエラー検出してもらうんじゃだめなの?と。
なんならそれをAntのタスクにしてもいいし。
253デフォルトの名無しさん:04/12/10 01:18:09
java房は世の中javaしかないと表ますね
254デフォルトの名無しさん:04/12/10 02:31:46
別に普通にJUnitでテストしたらいいじゃん。
255デフォルトの名無しさん:04/12/10 02:44:05
テスト至上主義は現実を考えるとどうかと思うよ。
毎回すべてをテストすることは難しいし。
256デフォルトの名無しさん:04/12/10 23:44:01
>>255
ANTやMavenでプロジェクトに組み込んでしまえば
自動でやってくれるじゃん。
257デフォルトの名無しさん:04/12/11 03:45:44
>>256
テストを自分で作らないかぎりは、自動でテストしてくれない。
258デフォルトの名無しさん:04/12/11 10:02:07
そこでJTestですよ。
259デフォルトの名無しさん:04/12/11 11:05:36
>>251
SpringIDEが、それぐらい、やってくれるんじゃないの。
260デフォルトの名無しさん:04/12/11 11:39:36
コンパイラは誰でも必ず起動するってことだろ。テストはやらない人もいる。
というかやらない馬鹿もいるわけで。でも馬鹿でもコンパイルだけはする。
261デフォルトの名無しさん:04/12/11 12:48:25
>>257
つまらんテスト仕様書を書く(しかもExcelで!)
よりテストコードを書くほうが楽しいと思わないか?

細かい修正のリリースの度に
テスト仕様書に則ってテストするのは
本来ならあたりまえの作業のはずなんだが
殆ど真面目に実行されていない。

テスト仕様書なんか納品前にでっち上げられる始末。
(銀行の勘定系とかはちゃんとやるけど)

それがmake(の相当品)に組み込まれているなら
便利だと思わないか?
262デフォルトの名無しさん:04/12/11 14:05:56
>>261
> 細かい修正のリリースの度に
> テスト仕様書に則ってテストするのは
> 本来ならあたりまえの作業のはずなんだが
> 殆ど真面目に実行されていない。

細かいメソッド作成の度に
テストファーストに則ってテストを作成するのは
本来ならあたりまえの作業のはずなんだが
殆ど真面目に実行されていない。

というのと違いはあるのかな?
263デフォルトの名無しさん:04/12/12 00:32:30
>>262
目視テストでは修正リリース時に毎回再実施のコストがかかる。
「真面目に実行」されていないのはリソース不足が理由。

自動テストでは上記の再実施のコストは激減する。
「真面目に実行」されないケースは開発者のスキル不足と
腐敗アーキテクチャが理由。

以上。
264デフォルトの名無しさん:04/12/12 02:57:00
>>263
> 自動テストでは上記の再実施のコストは激減する。

再実施のコストが激減しても、テスト初回のコストは激増するわけだろ。

> 「真面目に実行」されないケースは開発者のスキル不足と
> 腐敗アーキテクチャが理由。

これが通常のテストに当てはまらない理由と

> 目視テストでは修正リリース時に毎回再実施のコストがかかる。
> 「真面目に実行」されていないのはリソース不足が理由。

これがテストファーストに当てはまらない理由を教えてもらいたい。
265デフォルトの名無しさん:04/12/12 17:58:07
>>255
俺もそう思わんでも無いけど、そう思うのは自分の技能不足だということに気づいた今日この頃
266デフォルトの名無しさん:04/12/12 17:59:42
JUnit in Action 嫁。
267デフォルトの名無しさん:04/12/12 19:12:50
>>265
チーム全員、すべてのプロジェクトで徹底するのが難しいんだよ。
268デフォルトの名無しさん:04/12/12 21:09:02
>>265
つまり、ユニットテストというのは、個人の能力に依存することになるんだよね。
で、ユニットテストに依存するということは、チームの個々人の能力に依存することになる。
安定して開発するための一般的な手法としては、テストファーストはお勧めできない。
269デフォルトの名無しさん:04/12/13 00:10:47
そういうことを想定してたからこそ、ペアプロって発想が出てきたんだと予想してみる。
270デフォルトの名無しさん:04/12/13 01:28:06
ペアプロって人月が倍になるように見えるんだけど間違ってる?
典型的な請負DQNシステムの場合、そういう余剰な工数ってどこから
捻出できるの?
271デフォルトの名無しさん:04/12/13 01:49:37
XPの本で読んだだけだけど、研究によると、ペアプロをするとコーディング時間は
確かにのびるが、2倍の200%ではなくて、115%くらいになるそうだ。でその15%分、
品質が15%あがるらしい。どうやって計ったのかは知らない。
272デフォルトの名無しさん:04/12/13 11:56:23
そうじゃなくて2人分の金が必要って話になるんじゃないかってことだろ。人月だから。
273デフォルトの名無しさん:04/12/13 13:03:39
二人分の金が必要なのは当たり前だ。二人いるならね。どんな手法だろうが
二人いるなら二人分の金がかかる(奴隷でない限り)。

で二人で一緒に仕事すると、一人で別々にやる場合と比べて生産性が半分になりそうな
ので、費用も倍になりそうだという話じゃないか?
実際には別々にやった時と同じくらいの生産性を(つまり二人で二人分)を出す(らしい)と
いうことなんだが。
まあほんとかどうかは知らない。
274デフォルトの名無しさん:04/12/13 13:20:16
問題は、プログラムには単純作業的なものが多くて、ペアプログラミングの効率のよさが得られるところが少ないってことじゃないのかな?
データベースからとってきた値をJSPに流し込むのって、ただの作業だし。
275デフォルトの名無しさん:04/12/13 20:04:55
>>273
> で二人で一緒に仕事すると、一人で別々にやる場合と比べて生産性が半分になりそうな
> ので、費用も倍になりそうだという話じゃないか?
そうそう、そういいたかったんだ。ありがとう。
276デフォルトの名無しさん:04/12/13 21:49:00
>>268
それはユニットテストだのTDDだの以前に、
きちんとバグのないソフト作るとか、きちんとテストできるとか、きちんとデバッグできるだとか、
ある程度個人の能力に依存するのは当然だと思うぞ。
100人の人間がいて、100人とも皆が同じ答えを出すっていうのは人間じゃないぞ。
277デフォルトの名無しさん:04/12/13 22:11:52
>>276
コンパイラでチェックできるのなら、100人の人間がいて、コンパイルに通っていれば、100人とも皆が書いたコードがチェックに通っている。
278デフォルトの名無しさん:04/12/13 23:48:13
なんだかいつの間にかテストの有効性の話になってるが、もともとは、
コンパイラで型チェックさせるなんて意味あんのか、別の方法でチェックしても
いいじゃん、という話だったんじゃないか?

おれは>>260と同じ理由で価値があると思ってるけど。
279デフォルトの名無しさん:04/12/25 14:58:37
今月のJavaWorldの記事でGeronimoの記事を読んでたんだけど
コア部分はDIコンテナなんだね。MBeanで定義した各サービスをDIコンテナを使って依存性注入したり
独自のサービスをMBean化して公開出来るようになるらしい
記事には書いてなかったけど、そのDIコンテナってSpringを使ってるそうだし
今後は、APサーバーがDIコンテナを核として構築されるのが主流になっていくのだろうか
280デフォルトの名無しさん:04/12/26 00:04:13
俺様フレームワークを作るときにいつも困ってるのが「Factoryの提供の仕方」だったからな。
GBeanという形でFactoryを隠すことで、コンポーネントの利用者はサービスのみを享受できる。

サービスを提供したいのに、サービスを利用する準備から伝えないといけないのは、提供側も利用側もめんどくさい。
DIコンテナがあれば、提供者が好き勝手にFactoryを準備できる。
来年からやるプロジェクトではぜったいDIコンテナ使う。
S2よりはSpringだな。
281デフォルトの名無しさん:04/12/26 00:18:57
>>279
内部がSpringって、あのAOPが自分のインスタンスメソッド呼び出しには適用されない問題は
大丈夫なのかな。(クラスAのset.*にaspectを適用したら、最初に呼び出したsetHogeには
Aspectが適用されるけど、setHogeからthis.setHageを呼んだらAspectが適用されない問題)

実装の仕方みて「あーなるほどこりゃ自分で自分のメソッド呼んだら適用されないなー」と
思いはしたが、AOP的には困ったもんなのでまじなんとかしてほしい。
282デフォルトの名無しさん:04/12/26 00:32:48
一番使われるトランザクションとかログてきには、あまり困らないのでなんとかしないんじゃない?
するかな?
283デフォルトの名無しさん:04/12/26 00:40:09
おい、「setなんたらというのが呼ばれたら全部ログ吐け」ってのが、ちゃんと
動かない(ことがある)ってことわかってるか?
284デフォルトの名無しさん:04/12/26 00:44:11
>>281
GeronimoはAOPは標準では提供しないらしいよ。コアに持っているのはあくまでDIコンテナで
AOPについては既存のものがGBean対応してくれるのを期待してるらしいね
AOPをコアに置いているJBossとは考え方が違うのかな?
285デフォルトの名無しさん:04/12/26 01:32:44
>>283
でも、ログが重要なのって、オブジェクトの入り口のメソッドだから、急いで対応するほど問題になってないんじゃない?
286デフォルトの名無しさん:05/01/06 01:32:25
proxyタイプのAOPじゃそれが限界だろ。いやならAspectJだ
287デフォルトの名無しさん:05/02/15 01:33:40
Springしかり、最近のORMしかり、マッピングファイルうざい。
そんなさ、余計にバグ増やしてるようなもんじゃん。
補完も出来ないし面倒なだけだ。
288デフォルトの名無しさん:05/02/15 01:57:26
まあマッピングファイルがうざいということには賛成だな。
DI Containerは便利だし使ってるけど、たしかにマッピングファイルを書くのがかなりうざい。
ある程度自動化できるとは言ってもなあ。
289デフォルトの名無しさん:05/02/15 02:17:31
今のところだいたいXDocletで書いたもので用が足るから、あまり困ってない。
Strutsタグ+α程度で。
290デフォルトの名無しさん:05/02/15 02:38:31
そもそも、何でもマッピングファイルにすれば保守性、拡張性に
優れるって発想は誰からのものなんだ?
増えすぎると逆効果だぞ・・・
JAVAの世界って品質よりも名前だよな。著名な製作者が
提唱すると、何でもスタンダードになっちゃう。
291MARU-CHAN:05/02/15 08:12:56
ところでSpringとEclipseを使った場合ってMVCはEclipse方式でEJB(セッション管理など)の部分をSpringでやるっていうイメージなのでしょうか?
292MARU-CHAN:05/02/15 08:14:04
ごめんなさい、291はEclipseじゃなくてStrutsの間違い。
293MARU-CHAN:05/02/15 08:25:38
291は間違いダラケでした・・・書き直すと

ところでSpringとStrutsを使った場合ってMVCはStruts方式でEJB(トランザクション管理など)の部分をSpringでやるっていうイメージなのでしょうか?

です。すんません。
294デフォルトの名無しさん:05/02/15 12:12:02
>>293
MVCというのがどういうことか正確にわからんが、StrutsのActionとActionFormはそのまま使って、ActionServletをSpringに置き換えることになる。
HTMLフォーム→JavaオブジェクトまではStrutsに任せて、あとはSpringでって感じだな。
295デフォルトの名無しさん:05/02/28 10:26:54
アマゾヌで Spring In Action 発注したが 3/11 配送予定。
予約じゃなかったから仕方ないところか。

>293
Struts はコントロールとビューだけに専念して
ロジックを POJO で記述して Spring に管理させる感じかと。
Spring 独自の MVC フレームワークもあるらしいけど
そっちってどんな感じなんですかね?
Struts の servlet API べったりな感じが
どーも Spring の POJO マンセー思想に合わない気がする。。
296デフォルトの名無しさん:05/03/06 14:23:38
POJOなんて、スローガンに過ぎなかった、と。
297デフォルトの名無しさん:05/03/10 12:25:54
Spring in Action がまだ届かない
298デフォルトの名無しさん:05/03/10 21:07:16
SpringってWebじゃない普通のアプリケーションでも使えるの? 
299デフォルトの名無しさん:05/03/10 23:29:18
使おうと思えばつかえるけど、そういうのにはPicoContainerのほうが向いていると思われ。
私はPicoContainerの、何にでも使えるところが気に入ってます。
300デフォルトの名無しさん:05/03/16 19:21:26
Seaser>>>>>>>>>>>>>>>>>>>>>Spring
301デフォルトの名無しさん:05/03/17 10:43:16
Seaserなんて存在しないから、ということがいいたいのか。
302デフォルトの名無しさん:2005/04/08(金) 15:20:13
6月にやるJavaWorldのイベントにロッド・ジョンソンが来るみたい。

http://www.javaworld.jp/jwday/session/index.html

生ロッド見に行こうかな。
303デフォルトの名無しさん:2005/04/09(土) 00:26:06
DIのよさが分からん。。。

インスタンスを設定ファイルで与えられるって事がそんなにいいの?
アンチDIというより「DIってすげんだぜー」って言えるように
実は洗脳して欲しかったりする。

DIが出てきてどんな所が楽チンになったのよ?
304デフォルトの名無しさん:2005/04/09(土) 01:12:55
コンポーネント指向が強制される所?
インターフェイス経由で操作するのは、前から言われてることだし。
305デフォルトの名無しさん:2005/04/09(土) 01:20:32
>>303
EJBを使ってみれば、以下にSpringが楽で、「ああ俺だったらEJBのこのめんどくせえ
ところ、こうするのに!」というところを見事に解決していることがわかるよ。
306デフォルトの名無しさん:2005/04/09(土) 01:28:17
以下=如何
307デフォルトの名無しさん:2005/04/09(土) 09:16:59
303じゃないけど俺も同じような感じ。
EJBを使わない俺にはメリットのない話ですか?
クラスどうしの依存性が減り、シンプルになり、
ユニットテストがやりやすくなるという利点は分かるのですけど、
その代わりにXMLファイルがごちゃごちゃして手に負えなくなる。

勘違いしてる?

308303:2005/04/09(土) 09:21:03
>コンポーネント指向が強制される所? 
あるレベル以上のメンバーと組むことが出来る漏れとしては、
そんなもんイラネ?

>インターフェイス経由で操作するのは、前から言われてることだし。 
インターフェースは好きじゃないっス。デバッグやりにくいっス。
(あくまでDIのためにインターフェース作るのはね。プラグイン開発
とか機能要件として必要な場合はもちろん使う)

>EJBを使ってみれば、以下にSpringが楽で、「ああ俺だったらEJBのこのめんどくせえ 
>ところ、こうするのに!」というところを見事に解決していることがわかるよ。
漏れもEJBはめんどくさいって思ってる。なのでHibernateつかってる。
AOPでトランザクションはいい感じだけど、DIのよさはまだわからっス。
309デフォルトの名無しさん:2005/04/09(土) 09:23:51
>>307
ハゲドウ!!

310303:2005/04/09(土) 09:25:00
309は漏れです。。。
311デフォルトの名無しさん:2005/04/09(土) 10:29:11
>>308
インタフェース経由で作らないと、使い回しがしにくいだろ?
Spring以前の問題。
あるレベル以上のメンバーの中で、308のレベルだけ低いのか、
あるレベルというのが低いのか。
312303:2005/04/09(土) 11:07:08
うぬー。使い回ししやすい、しにくいはインターフェースに
かかわらずクラス設計しだいじゃないの?
上にも書いたけどインターフェース自体を否定してるわけじゃないよ。
インターフェースとImplクラスが1つずつしか作らない場合
は面倒だなーって思います。
313デフォルトの名無しさん:2005/04/09(土) 13:39:51
そうだな、インターフェースを使ったプログラミングをしようとすると、
ファクトリをつくらなくちゃいけなくなるだろ。だって、newでインスタンス
を作っちゃうと、newしている部分は具象クラスに依存してしまうから。

なんで、ファクトリ用クラスをつくって、ファクトリ経由でオブジェクト生成する。

とここまでは誰でも実装すると思うんだよ。
で、ここでファクトリを書く方法を考えてみようや。クラスごとにファクトリを
別に書くなんて馬鹿げてる。じゃあ、インスタンス生成メソッドの引数でクラス・オブジェクト
かクラス名を引数で取ることにしよう。

じゃあ生成メソッド内で、渡されたClassに対してgetInstanceすることにしようか?
これはできない。渡されるClassは、インターフェースだろうから。

じゃあif文で、渡されたClassなりClass名なりで分岐して、具体的な生成クラスを
特定しようか。これも馬鹿げてる。クラスを追加するたびにファクトリにif文を追加
して、コンパイルし直すのか? 分かりやすい記述法で外部ファイルに記述したい
ところだ。

そういや、具象クラスを生成するときのコンストラクタに引き渡す引数はどうしよう
か。ファクトリの生成メソッドにObject[]として引き渡してもらおうか? 生成後に
setXXXX()で全部セットしてもらおうか。どっちにしても、具象クラスのコンストラクタ
なりプロパティに依存してしまうよねえ。

さあ、どう実装しようか。外部ファイルで具象オブジェクトを特定して、具象オブジェクト
生成時に内部状態の初期設定も行うファクトリだ。

そんな話を説明しているのがロッド・ジョンソンの本「J2EEシステムデザイン」。いろんな
アイデアを具体例を使って披露していく。このアイデアを実装して公開したのが
Spring Frameworkだよ。
314デフォルトの名無しさん:2005/04/09(土) 15:18:41
>>308
> 漏れもEJBはめんどくさいって思ってる。なのでHibernateつかってる。
> AOPでトランザクションはいい感じだけど、DIのよさはまだわからっス。

EJBめんどくさい→Hibernateつかってる
となるということは、「EJB = EntityBeanのみ」ってことなのか?

DI Containerが作られた契機となった問題点って、Stateless Session Beanを
つかったビジネスロジック層の作り方があまりにもめんどくさい、ってところだっ
たと思うんで、ロジック層をDIパターン以外の方法で効率よく解決できるんなら、
「DIいらね」ってことに出来ると思うけど、Hibernateではそこは解決できんよね。

Hibernateで永続化層はクリアしたとして、ロジック層のオブジェクト生成は
どうするわけ? newしてるってこと? EJBは論外として。
315デフォルトの名無しさん:2005/04/09(土) 16:24:18
インターフェイスを使う利点が少ない状況ってのはやっぱりある罠。

上にも少し出てたけどプロジェクトメンバーの技量があまりに低い場合には
プログラム中で全てif文で分岐した方が効率がいい場合もあるかもしれない。
インターフェイスの使い方をよくわかってない人はまだ意外といる。(職場によるだろうけど)

「外部ファイルで具象ファイルを指定することにより具象ファイルを変更することが可能」というのも
それによる恩恵を受けられる環境と受けられない環境があるんじゃないだろうか。
自社システムやそれに近いぐらいに自分のところで管理しているシステムで
かつ頻繁な拡張や似たようなもの作る機会が多いなら強力だと思うけど
作って納品して終わりとか拡張がまるでなかったりしたら自分たちにとっての利点はあまりないかも。
>>311が理想だと思うけど状況次第では>>312の言うこともわかる。

俺はSpring好きだしどんどん使っていきたいと思ってるけど使ってもおいしくない状況ってのはやっぱりあるんジャマイカ。

ところでSpring in Action邦訳☆⌒ 凵\(\・∀・) まだぁ?
316デフォルトの名無しさん:2005/04/09(土) 17:02:49
そう、だから、インターフェースを使う必要がないならファクトリも必要ないんで、
DIパターンの利点がほぼなくなる。

あとは、コンテナが提供するAOP機能が使いたいかどうかだけだろう。

でもインターフェースを使ったことによる利点が出てくるのって、実は開発の
後の方(変更が入った時)なんで、最初のうちに「この開発ではインターフェース
使うほどじゃないだろ」とか判断してしまうと、後半で泣きを見ることもあるから、
先行投資としてインターフェース中心でいくんじゃないかね。
317デフォルトの名無しさん:2005/04/09(土) 17:11:58
インターフェイス主体でプログラム作るときの面倒さが減ることがDIのメリットなら、DI自体にはメリットはないみたいになるな。
318デフォルトの名無しさん:2005/04/09(土) 17:45:35
>>317
詳しく
319デフォルトの名無しさん:2005/04/09(土) 18:03:51
いや、DI「コンテナ」の、インターフェース生成時の実装隠蔽ファクトリとしての利点はなくな
るだろうけど、インスタンス生成時に依存性を注入して、すべてのプロパティが構成済みの
オブジェクトを作成するというDIパターン自体のメリットは残るだろう。

インターフェース主体でないからって、DIパターンなしだったら、

インスタンス生成→他の依存インスタンス生成(このインスタンスにも依存インスタンスがある)
→インスタンスのプロパティに依存インスタンスをセット

ってのを自前でやらないといけない。newして、関連オブジェクトをnewしまくって、関連
オブジェクトの全プロパティをセットして、で、最初にnewしたオブジェクトに関連オブジェクトを
セットしないといけない。

そんなめんどくさいこと、ファクトリでやってよ、と思わないか?
320デフォルトの名無しさん:2005/04/09(土) 18:28:24
ファクトリでやるのはめんどくさいから、それぞれのオブジェクトでやってよ、と思ってはだめですか?
321デフォルトの名無しさん:2005/04/09(土) 19:33:43
>>319
先日迷ったあげくSpring無しで書いたんだけどいちいちnewしてセットは確かに面倒だった。
これを面倒だと思うのはある程度Springに慣れてるからだと思うけど
それ以上に苦痛だったのは後で変更が発生したときの修正が面倒そうだと思いながら書いてたからだな。

でも>>319の一番のメリットは
具象クラスが変わることで具象クラスが必要とするオブジェクトが変わってもファクトリを修正せずに対応できること
(つまりは具象クラスの差し替えのしやすさ)
じゃないのかな。
それも具象クラス差し替え時に生きてくるメリットな気がする。

俺はSpringやDIコンテナ、もちろんインターフェース多用するのも否定するつもりはないんだけど
仕事場の環境次第ではSpringわからない人もまだ多いし
>>318の言うような先行投資の効果が目に見えて出ない時も多々ある。
それを考えると設定ファイル書いたり周知したりで面倒さが前面に出てくる人がいるのもわかるな、と。
後々俺が作った物を他の人が管理することになった時にその人はSpringを知っていてくれるだろうか、
俺がこれまでにしたつもりの先行投資は最終的にプラスになるのだろうか、
とちょっと悩んで書いたのが>>315なんだ。
チラシの裏って書いた方が良かったかもな。すまん(´・ω・`)
322303:2005/04/09(土) 20:29:45
>>314
>ロジック層のオブジェクト生成はどうするわけ? newしてるってこと?
うん、newしてる。

>>315
そうだね、頻繁な拡張とかはないです。

>>316
>でもインターフェースを使ったことによる利点が出てくるのって、実は開発の 
>後の方(変更が入った時)
うーん、開発後方でImplクラスを丸ごと挿げ替えるほどの変更は
ないなー。Implクラスの実装を修正するだけじゃすまないって事デツか?

あー、>>319 見て分かった。ビジネスロジック層の作り方がそもそも違うんだ。
漏れは、依存オブジェクトをプロパティ経由でセットしないデツ。なので、
ビジネスロジック層のオブジェクトの殆どが状態を持たないです。
ただね、このOOPらしくない所が良いのか悪いのかは漏れも迷ってる。
323デフォルトの名無しさん:2005/04/09(土) 21:16:39
OOに反するコード=劣悪なコード
324デフォルトの名無しさん:2005/04/09(土) 21:37:54
ステキなOOの概念がこの2年で大きく変わっている現実
325デフォルトの名無しさん:2005/04/09(土) 22:15:37
> うーん、開発後方でImplクラスを丸ごと挿げ替えるほどの変更は
>ないなー。Implクラスの実装を修正するだけじゃすまないって事デツか?
ただのロジック変更ならソースの修正で済むけど、対象によってロジック分岐とかだと
if instanceof else if〜 で分岐するのは全くエレガントじゃないから
Strategyパターンにしたほうが後々いいでしょ、って事だな。
拡張性とか関係ない部分ならいいかもしんないけど。
326デフォルトの名無しさん:2005/04/10(日) 00:22:16
うーん、最近の流れは勉強になるなぁ。
いつまでも独学は不安なので、自分の独学部分が正しいか
検証することも踏まえて、なんか本を買おうと思うのですが、
・これは読め
・これは糞だから読んじゃだめ
などありましたら、ご紹介いただけますか?
327デフォルトの名無しさん:2005/04/10(日) 00:27:43
>>322
>ないなー。Implクラスの実装を修正するだけじゃすまないって事デツか?
機能追加の場合には新しい機能向けのクラス作って
条件によってどちらを使うか切り替えればわかりやすいと思う。
また、別のユーザー向けに似たようなシステム作る時には
クラスごと差し替えることができればとても楽。

>漏れは、依存オブジェクトをプロパティ経由でセットしないデツ
引数で渡してるの?
インターフェース使わないならそれでも困らないと思うけど
インターフェースで実装の切り替えをするような場合には引
数がビジネスロジッククラスの実装に依存すると困るのよ。
ある実装ではこのオブジェクト使うけどこの実装では使わないとなると引数が統一できないから。
その点>>319のように依存オブジェクトを初期化時に設定ファイルで指定して
プロパティやコンストラクタでセットするようにすれば
呼び出し側からは実装の違いを全く意識する必要がないことになる。
328デフォルトの名無しさん:2005/04/10(日) 01:11:57
Springを使って3ヶ月程度のプロジェクトをやってみた。
俺はPMの立場で実装はやらないが、コードレビューする程度。

結論は、SpringにするかはともかくIoCコンテナなしの開発は、もう考えられない。
最初にかならず行っていた低レイヤー部分のフレームワーク作りをしなくて済むのだから。
いつもなら、実装がぶれるのが嫌で、最初のうちに低レイヤーのフレームワークを作ってから
プログラマに渡していた。

最初にこう書くべきだというサンプルを見せてやれば、
newbieでもそこそこのものを書き上げてくれる。

Springのソースを読んでて、interfaceは多重継承できることを初めて知った。
Javaには自信を持ってたのに、自分に少しがっかりした。
329デフォルトの名無しさん:2005/04/10(日) 02:32:31
>>326
>>313にも出てるけど、ロッド・ジョンソンの「J2EEシステムデザイン」はお勧めできる。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4797322888/250-2144330-3153039

DI(あるいはIoC)コンテナ登場前夜に、EJBの問題点を詳細に書き表して、なおかつ
解決するための方法論を具体的なコードを交えて説明した名作だ。この本で紹介された
アイデアがそのまんまSpring Frameworkの基礎になってる事は有名。AOPの実現方法ま
でおんなじだし、Springの解説書か?と思えるほど。

まあロッド・ジョンソンがSpringの開発者なわけであたりまえなんだろうけど。

一方読む必要がないのは、「Java ブループリント」だな。人生を無駄遣いする事になる。
330デフォルトの名無しさん:2005/04/10(日) 02:53:18
>>328
そう、それだ。
エンタープライズ向け開発だと、いろんな技術レベルの人間があつまるから、かならず
基礎アーキテクチャを技術レベルが高い人間で実装するよな。

つまり技術レベルの低い人でも、決められた実装方法に従って普通のJavaプログラムと
して作れば、あとは基礎アーキテクチャが何とかするよ、という状態を作るわけだ。

そういうものの大部分って、ロジック層のシングルトン・オブジェクトをどうやって生成するか
とか、初期化を間違わないにはどうしたらいいかとか、EJBを取得するのにJNDI参照したり
RemoteExceptionを処理し忘れたりしないようにするにはどうしたらいいか、とか、
めんどくさいことばっかりなんだよな。

Springはそういうものの大部分を吸収してくれるし、EJBの利点の一つ、宣言的トランザクション
もサポートしてる。

正直、リモート呼び出しの必要性が無ければEJBを使う意味を見いだせない。
331デフォルトの名無しさん:2005/04/10(日) 03:25:34
思うに、Spring自体が、EJBのめんどくさいところを解消する過程で産みだされたところを
ふまえとかないと、なんで「Spring楽だー」という輩がいるのか理解できなくて、>>307のような
感想になっても仕方がないと思う。

>>307
>その代わりにXMLファイルがごちゃごちゃして手に負えなくなる。

EJBのディプロイメント・ディスクリプタというXMLファイルは、SpringのXML定義の10倍は
ごちゃごちゃしてて手に負えないんですよ。Springの構成ファイルは分かりやすいよ。
しかも構成ファイル一つでリモート呼び出しを除くEJBの機能を実現できるんだったら、
EJBに苦しめられた輩が採用しない理由はないよ。
332デフォルトの名無しさん:2005/04/10(日) 03:39:21
ふむ、ageとこう。
333デフォルトの名無しさん:2005/04/10(日) 03:46:18
            _
        r-、' ´   `ヽr-、
       ィ7 /l: ハヽハ トヾ    駄スレを保守することは、この俺が許さん!
        '|l |'´_` ´_ `| ||    信念に基づいて行動する。
        | |´ヒ}   ヒ}`! l|    それを人は正義と言う。
   __ノ゙). 从 l,  _'_.  |从    今俺が行ってることは、荒らしではない。
 ,_'(_ ノ_ヽ ヾl.> - ,イ;リ     正義という名の粛清だぁ!
 { f:テ} {'f:テ}',/\ヽ--//ヽ    
 ヽ,r─‐ 、ィ .、、 i l>Y<! i '、    バーニング!
 / iゝ_ノ iヽ /l   |l  l   ',
 lンヽ/ムノじ

334デフォルトの名無しさん:2005/04/10(日) 08:58:20
>>328
Webじゃない普通のアプリについてはどう思ってるか教えて欲しい
335328:2005/04/10(日) 10:12:52
>>334
今回は、通常のアプリとWebアプリとどちらでもSpringを使った。
Webアプリのほうが制約があり、通常のアプリのほうがより自由というのが回答。

Springの構成は、まず通常のJavaアプリで使えるコアがある。
optionalな形でSpring WebなどのWebアプリ用サポートがある。

Springは、BeanFactoryという汎用のファクトリに識別子を渡して生成してもらうのだが、
このファクトリのインスタンスをどこかに保存しておく必要がある。
保存しない場合は、ファクトリのインスタンスを毎回newする必要が出てくる。
これは毎回設定を解釈するというコストをかけることとイコールだ。

で、通常のアプリならメインクラスのメンバにでも入れておけばよい。
これがWebアプリだと、applicationスコープのアトリビュートに放り込むことになる。

BeanFactoryのアトリビュートへの設定と取り出しを管理するクラス自体は、Spring組み込みで提供されてる。
しかしServletContextを使える場所でしかBeanFactoryを取得できないという制約が生まれる。

ちゃんとクラス設計していれば問題は生じないけど、
ちょっと工夫してあげなきゃならない場面もでてくる。

まああれだ。たぶん大丈夫だよ。
心配なら一度ファクトリ部分のソースを追って、中身を確認したらどうだろう。
変な制約はないし、シンプルで、不安は生まれないと思う。
336334:2005/04/10(日) 13:11:02
>>335
さんきゅ
337デフォルトの名無しさん:2005/04/11(月) 02:58:25
Spring In Actionよりも、ロッド・ジョンソンの「Expert One-on-One J2EE Development without EJB」
を邦訳してほしいな。「J2EEシステムデザイン」の続編みたいな本だ。
338デフォルトの名無しさん:2005/04/11(月) 15:20:29
便乗質問なんですが、

>>335
> BeanFactoryのアトリビュートへの設定と取り出しを管理するクラス自体は、Spring組み込みで提供されてる。
> しかしServletContextを使える場所でしかBeanFactoryを取得できないという制約が生まれる。

ServletContext sContext = getServlet().getServletContext();
ApplicationContext aContext =
(ApplicationContext)sContext.getAttribute("org.springframework.web.struts.ContextLoaderPlugIn.CONTEXT.");
339デフォルトの名無しさん:2005/04/11(月) 15:24:27
ああ、途中で送信してもうた。

>>335
> BeanFactoryのアトリビュートへの設定と取り出しを管理するクラス自体は、Spring組み込みで提供されてる。
> しかしServletContextを使える場所でしかBeanFactoryを取得できないという制約が生まれる。

は、ApplicationContextを指していると思うんですけど、ApplicationContextの取り出しは、
>>338に書いたように、ServletContextから、↓の名前のクラスで埋められている、オブジェクトを取り出すんでOK?
「org.springframework.web.struts.ContextLoaderPlugIn.CONTEXT.」

それとも、ApplicationContextを取り出すには、こうする見たいなのってあるの?
340デフォルトの名無しさん:2005/04/11(月) 16:10:43
>>339
俺はこうしてるよ。
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
341デフォルトの名無しさん:2005/04/11(月) 16:33:05
>>340
素早い回答サンクス!!!
やっぱり、ユーティリティはあったのね。
342デフォルトの名無しさん:2005/04/11(月) 22:03:14
アプリケーションを起動したまま、コンポーネントを入れ替える方法ってありますか?
343デフォルトの名無しさん:2005/04/11(月) 22:42:10
こういうやり方で取り出すのはOKなのかな?
これならServletContext無くても取れるんだけども。

package util;

public final class BeanFactoryHolder implements BeanFactoryAware {

  private static final BeanFactoryHolder HOLDER = new BeanFactoryHolder();

  public static BeanFactoryHolder getHolderInstance() { return HOLDER; }
  public static BeanFactory getBeanFactory() { return HOLDER.beanFactory; }


  private BeanFactory beanFactory;

  private BeanFactoryHolder() { }

  public void setBeanFactory(BeanFactory bf) {
    if (beanFactory != null) {
      throw new IllegalStateException("beanFactory already exists");
    }
    beanFactory = bf;
  }
}

<bean id="beanFactoryHolder" class="util.BeanFactoryHolder" factory-method="getHolderInstance"/>
344デフォルトの名無しさん:2005/04/12(火) 01:37:15
1個のVMに1個のWebアプリケーションのみ配備する、という限定ならいいだろうね。
裏を返せば不適当ということ。

util.BeanFactoryHolderクラスは、
Servletコンテナに100個のWebアプリがディプロイされていても、
そのうちの1個でしか使えない。
もしくは、100個のWebアプリ間で1個のBeanFactoryを共有する。
345303:2005/04/13(水) 01:02:58
ご意見色々ありがとー。勉強になりました。
上に出てきた本も読んでみます。

現状の漏れの考えは、
1.ビジネスロジックに再利用性は殆ど感じない(あるとしたら
ライブラリとかユーティリティ系)。
2.業務要件として拡張性が求められている箇所は、自分で
ファクトリを作らないでDIコンテナを利用するのは良いかも。
3.本読んだらかわるかも。

おまけ
EJBで作られたビジネスロジックのコンポーネントは殆ど見たことない
んだけど、それってEJBがめんどいからでは無くってやっぱり
ビジネスロジックに再利用性が無いからじゃないかなって、
思いまふ(UI系は除いて)。
beaが頑張ってる気もするけど、beaでこの程度かと。。。

346デフォルトの名無しさん:2005/04/13(水) 01:46:12
ビジネスロジックをインターフェース経由で使うのは再利用のためじゃなくて、
業務上の変更に耐えられるようにするためだよ。

EJBはほっといてもインターフェース中心になるんだけど、一つのオブジェクトに
対して4つのインターフェースが必要だったりして馬鹿くさいので誰もやらんのだ
と思うけど。

おれもトランザクション・スクリプトというか、関数プログラミング的に作っても
追いつくときは、極端にstaticメソッドだけでビジネスロジックを組んだこともある。

でもドメインモデルみたいに、各ビジネスロジック・オブジェクトが他のオブジェクト
と結びつき合ってる場合だと、業務の変更に対応する場合に、クラス構成を変えた
ほうが早いという場合もあるよ。
「請求書サービス」を「請求書サービス」と「売掛統計サービス」と「台帳サービス」
の三つに分解して、請求サービスのデータ登録メソッドを呼び出したら統計と
台帳も更新するように変えたって、請求書サービスのインターフェースがかわら
なければコントローラに影響を与えない。

逆に、オブジェクトが互いに依存し合ったドメインモデルのようなものを作らない
なら、別段困らないようにも思う。
347デフォルトの名無しさん:2005/04/18(月) 21:27:23
Spring入門が発売されましたなぁ
348デフォルトの名無しさん:2005/04/18(月) 23:07:17
今読んでます
349デフォルトの名無しさん:2005/04/18(月) 23:27:43
どんな感じ?
350デフォルトの名無しさん:2005/04/19(火) 09:09:14
俺は確保はしたがまだきちんと読んでない。
iBATIS との連携について書いてあったのがわりと新鮮だった感じ。
(もちろん Hibernate との連携も抑えてあった。)

Spring in Action の方が読み応えありそうなので
そっちを最初に片付けようと思ってる。
351デフォルトの名無しさん:2005/04/19(火) 22:02:23
>>349
入門書という位置づけのようだが、定義ファイルに関する説明が
一覧表ですまされていたりするので、本当に初めての人がこの本で
Springを使えるようになるのかはちょっと疑問。
ApplicationContextのメッセージソースやイベントの説明はあるのに
FactoryBeanの説明がないっていうのは妥当な判断だろうか?
AOPも定義ファイルに書く使い方の前にProxyFactoryを直接使った例で
説明する意味はあるのだろうか?
DIとAOPという一番ベーシックな部分の説明が弱いのが入門書としては
難点だと思う。といって応用的な話があるわけでもなく…
352デフォルトの名無しさん:2005/04/19(火) 22:48:59
>>350-351
サンキュ
Seasar2をちょっと触ってみたぐらいの俺だけど、Spring in Actionを買ってみます
353デフォルトの名無しさん:2005/04/19(火) 22:54:31
Spring入門、俺も読み始めました。
内容はおいといて、文章は少しウザイ。
354デフォルトの名無しさん:2005/04/20(水) 17:55:55
JDBCコネクションをプーリングしたいんですが、どんな方法があるのでしょうか?
355デフォルトの名無しさん:2005/04/20(水) 20:01:54
Webならサーブレットコンテナまかせ。
356デフォルトの名無しさん:2005/04/21(木) 00:52:01
>>354
Springで使うのなら、Apache Commons DBCPが一番お手軽かな
ttp://jakarta.apache.org/commons/dbcp/
357デフォルトの名無しさん:2005/04/21(木) 00:55:53
「Spring入門」の2章でSpringをEclipseで使えるようにする説明があるんだけど、
「まずはSpringを以下のサイトからダウンロードし、適当なディレクトリに
解凍してほしい。
(URLとファイル名)
図2.19はダウンロードしたSpringをインポートしたJavaプロジェクト(以降は
Springプロジェクト)である。」
ってだけなんだよね。普通はこの説明で十分なのかな?
この後インポートした中にあるJARを別プロジェクトのlibにコピーしたりして
インポートする意味なしじゃね? って感じなんだよね。ソースパスの話ないし。
手間かけずにクラスパス通してSpringのソース見れるようにしたいんだけど
どうするのがいいのかな?
CVSから.projectと.classpath取ってくる? maven eclipseしてからインポート?
みんなどうしてる?
358デフォルトの名無しさん:2005/04/21(木) 10:06:14
>>355,356
まずはDBCPから始めてみます。
359デフォルトの名無しさん:2005/04/21(木) 11:51:42
>>357
本屋に逝って JavaPress Vol.41 を嫁
360デフォルトの名無しさん:2005/04/21(木) 12:27:25
>>359
持ってるけど大したこと書いてない
spring.jar他をクラスパスに通せと必要に応じてsrcやdoc以下を参照しろってだけ
spring.jarくらいならともかく,その他のlibにあるJARを手間かけずにまとめて
クラスパスに設定したいなんて誰も考えないってこと?
361デフォルトの名無しさん:2005/04/21(木) 20:41:26
JSFやSeasarの陰に隠れてもはや風前の灯火…。
362デフォルトの名無しさん:2005/04/21(木) 22:00:16
>360
spring 使うことで増える lib は
spring.jar と aopalliance.jar
(AOP する人は cglib もか)程度なんで、
別に特別たくさん増やすとかいうわけでもないので
そんなに問題になると思わないんですが。

Spring のソース見る分にはlib/以下のjar
にclasspath通しまくる必要なんてないし。
363デフォルトの名無しさん:2005/04/21(木) 22:09:55
>>361
JSFの影にかくれるとか言ってる時点で、Springがなんなのかわかってないだけということをさらしてるわけですね。
364デフォルトの名無しさん:2005/04/21(木) 22:13:01
>>361
で、どれが良いのか言ってみそ
365デフォルトの名無しさん:2005/04/21(木) 22:58:54
>>364
EJB3.0
366デフォルトの名無しさん:2005/04/22(金) 13:58:47
ふぅ〜、アフォ発見。たまに湧いて出るこういうボケも、一種の清涼剤か。
367デフォルトの名無しさん:2005/04/22(金) 15:32:50
なんか Perl の話をしているところへ
ナメック語やRupyの陰に隠れて云々

とかって言われた気分。

そんなことより Spring で Color を Set する時に(コンストラクタベース)
いろいろ警告が出るようになってしまいました。

<bean id="bgColor" class="java.awt.Color" singleton="true">
<constructor-arg index="0">
<value>16711374</value>
</constructor-arg>
</bean>

Color(int rgb) を呼び出してるつもりなんですが
Ignoring constructor [public java.awt.Color(int,int,int,int)] of bean 'bgColor': could not satisfy dependencies
(以下stack trace)
Ignoring constructor [public java.awt.Color(float,float,float)] of...(同様にstack trace)
と延々とログられた挙句、最後に
Bean 'bgColor' instantiated via constructor [public java.awt.Color(int)]
と表示されて、無事インスタンスが作成されます。

一応、インスタンス作成されて実用上は問題ないといえなくもないですが
ログが太って困るのでどうにかしたいんですが
誰か正しい設定方法をご存知の方、ご教授ください。
1.1.2 で動かすと問題ないのですが、1.1.6 に上げたら出るようになりました。
(Spring のログレベルは DEBUG ですが、これはしばらくこのままで行きたいです。)
368デフォルトの名無しさん:2005/04/23(土) 00:29:07
こんなこと書くと荒れるかもしれないが
SpringとSeasarって国内の業務ではどっちが多く使われてるのかな?
369デフォルトの名無しさん:2005/04/23(土) 02:19:57
現実的にはSpringかと。
ただ、オープンソースのプロダクトの利用数を数えるのは難しい上、両方そこまで大々的には使われてないから実数はよくわからない罠。
370デフォルトの名無しさん:2005/04/23(土) 22:42:23
1.2のRC2が出てるが、
なんか役に立ちそうな機能追加された?
371デフォルトの名無しさん:2005/04/24(日) 01:21:41
Hibernate3対応かな?
372368:2005/04/24(日) 19:14:40
>>369
thx!
373デフォルトの名無しさん:2005/04/24(日) 19:30:21
>>372
ただ、Spring使ってる人のまわりではSpringばっかりだし、Seasar2使ってる人のまわりではSeasar2ばっかりだから、人の意見はあまりあてにならんけどね。
374デフォルトの名無しさん:2005/05/06(金) 13:30:15
すまん、DIはよく知らんのだが、よくEJBは××だからDIまんせー的な
発言見るんだけど、そもそもDIってリモートコールできんの?
375デフォルトの名無しさん:2005/05/06(金) 13:58:11
DIパターンとリモートコールは全然関係ない領域の話だとおもうがね。
376デフォルトの名無しさん:2005/05/06(金) 14:30:44
一つ聞きたいんですが
ttp://wiki.bmedianode.com/Spring/?%BC%D9%B0%AD%A4%CASingleton
↑のページを参考に beanRefContext.xml を書いたのですが
Spring が DEBUG メッセージを吐くのでちと気持ち悪いです。
ログは汚れるものの、期待通りの動作はしています。

型の合うコンストラクタが見つからないとか、そんな感じのメッセージなのですが
確かに ClassPathXmlApplicationContext のコンストラクタに
java.util.ArrayList を持つものはない模様で
この辺りは「一通りコンストラクタ調べたけどないっぽいから
String[] だと思って処理しよう」とかそんな流れでしょうか?
この辺り、ログを汚さないでスマートに指定する方法を教えていただけないでしょうか?
377デフォルトの名無しさん:2005/05/06(金) 18:37:22
Springをちょっとずつ勉強しててDIのあたりまでわかったところなんですが、
AOP周りにも触ってみようと思ってます。

で、AOPって、具体的にはどんなことに使えるのかサッパリわかりません。
ログとる例ばっかりで、他に出来ることはないのか?って感じなんですが、
何に使うんですか?AOP

コンテナ側では使ってるのは理解できるんですが。
具体的な用途や、参考になるページがあったら
すみませんが教えてもらえないでしょうか。
378デフォルトの名無しさん:2005/05/07(土) 03:33:48
AOPの二大用途といえば、

- ロギング
- トランザクション

だわな
379デフォルトの名無しさん:2005/05/07(土) 05:15:36
Webの場合はそのくらいだな。
380デフォルトの名無しさん:2005/05/07(土) 06:30:47
GUIのプログラムの場合、データ変更の画面への通知もAOPがいい。
381デフォルトの名無しさん:2005/05/07(土) 06:33:45
イベントリスナーとかの代わりにって事?
382デフォルトの名無しさん:2005/05/07(土) 06:58:12
GUIモノだと、だいたいセッターの後でnotifyみたいなの呼び出す必要があって、かなりめんどい。
それがAOPで楽できる。
383デフォルトの名無しさん:2005/05/07(土) 08:04:05
効率を無視していいなら良いんじゃないの
384デフォルトの名無しさん:2005/05/07(土) 08:38:48
無視していいわけないけど、影響が少なければ問題ない。
385377:2005/05/07(土) 12:01:00
どうもありがとうございます。Web系なんですが、ログもトランザクションも
Springだとそのための手段が用意されてるのでなかなか使い道が難しいですね。

昔GUIも作ったことあったのですが、その例もなるほどなって思いました。
面倒ですものね。「横断的関心」ってやつがちょっとイメージできた気がします。

探してたら、こんなページも見つけました。難しいので理解できてませんが
ttp://www.oucc.org/~tail/aspectj/index.php?%A5%A2%A5%B9%A5%DA%A5%AF%A5%C8%A4%CE%CD%F8%CD%D1%CA%FD%CB%A1
386デフォルトの名無しさん:2005/05/07(土) 12:03:14
あ、すいません。ログはないですね。
387デフォルトの名無しさん:2005/05/08(日) 13:35:51
>>386
org.springframework.aop.interceptor.TraceInterceptor
org.springframework.aop.interceptor.DebugInterceptor
388デフォルトの名無しさん:2005/05/08(日) 18:55:53
>>375
質問した者だが

いやそうじゃなくて、じゃあそもそもEJBと比較して意味あんのかって意味。

分散オブジェクト技術とそうでない技術なら話してる土台が違うわけで
DI>>EJBとかわけわかんないんだけど。
389デフォルトの名無しさん:2005/05/08(日) 19:18:26
>>388
EJBは分散が必要ない人にも分散を前提としためんどうな手続きを強要してた。
ほとんどの人に分散は必要なかった。
ほとんどの人にDI+ORM > EJB。
390デフォルトの名無しさん:2005/05/08(日) 19:21:41
>>389

てか分散使わないのにEJB使ってる時点でどうかと・・。
まぁ後者のORMとかはわからなくもないが、EJBは
どっちかっつーと、というかどう考えても分散オブジェクトなわけで。
391デフォルトの名無しさん:2005/05/08(日) 19:35:40
で、だからEJB使わずDI+ORMでいいじゃんとなったんでしょ。
392デフォルトの名無しさん:2005/05/08(日) 21:33:10
>>391があたりまえだがいいことをいった。
393デフォルトの名無しさん:2005/05/08(日) 22:17:34
>>390
まあ、EJBには分散以外にもいい点があるわけで。
宣言的なトランザクションとか、SQLを直接書かないDBMSアクセスとか。

そういEJBのよい機能は使いたいけど、
EJBは動かすの面倒、重い、コンテナに依存してテストしづらい
ってのがあって、その打開策としてSpringをはじめとして色々な
ソフトが出てきているわけだよな。
394デフォルトの名無しさん:2005/05/08(日) 23:26:16
EJBってのはむしろCORBAの世界で
生きるはずなのだが。
395デフォルトの名無しさん:2005/05/08(日) 23:38:34
それはない。
396デフォルトの名無しさん:2005/05/12(木) 14:50:52
Spring+HibernateでWebアプリ開発しようとしているんですが
applicationcontext.xmlのsessionFactoryのところで

java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException
となってしまいます
でも、Hibernateのソースを見ても
net.sf.ehcache.CacheExceptionというクラスは存在してないみたいなんですが
どういうことなんでしょうか?

Hibernateはspring-framework-1.1.5の中に入っていたものを使用しています

397デフォルトの名無しさん:2005/05/12(木) 19:55:24
そりゃeCacheのjarを用意していないからでは
398デフォルトの名無しさん:2005/05/14(土) 18:48:46
質問があります。どうしてもわからないので教えてください。

applicationContext.xml に登録したオブジェクト(bean)の中の処理でファイルを読もうとしています。
このクラスは HttpServlet を継承していません。(特にクライアントからの要求を受け付けるわけではないので
そうしていました)したがって、web.xml には mapping していません。

この状態で、(webapps/project)/WEB-INF/data/ といったディレクトリからファイルを読み出したいので、
絶対パスを取得しようとしていますが、わかりません。

ApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml");

で、コンテキストは取得できましたが、パスを取り出す方法はないでしょうか?
(もちろんコンテキストからでなくても構わないです。)

Spring 使ってる上でクラスの作り方が間違っているとか、もっと普通の方法があるようでしたら
ご指摘ください。よろしくお願い致します。
399デフォルトの名無しさん:2005/05/15(日) 22:24:06
>>398
私も同じ現象起きてます。
"/WEB-INF/lib/applicationContext.xml"という指定をすると
WEB-INFが見当たらないというエラーが返ってきます
なんでかしらんけど、パッケージの中しかパスが認識されないんです
だから
"/jp/co/sample/applicationContext.xml"
みたいにすると読み込めるんですよ。
でもソースのパッケージの中に設定入れとくのはちょっと気持ち悪いな、といった感じです
私はEclipseでTomcatプラグイン使用してますけど
Web.xmlの設定とかが必要なのかなー
400399:2005/05/15(日) 22:30:21
レスした後に気づいたけど

>で、コンテキストは取得できましたが、パスを取り出す方法はないでしょうか?
>(もちろんコンテキストからでなくても構わないです。)

これどいう言う意味ですかね?

絶対パスで指定しなければルート(WEB-INFなのか?)から
フォルダをなめていってくれてapplicationContextを探すってことですかね。

不勉強ですいませんorz
401デフォルトの名無しさん:2005/05/16(月) 05:36:09
つか、Webアプリだったらweb.xmlに設定書いた設定使うようにすりゃいいじゃん。
402398:2005/05/17(火) 05:44:34
>>399

/web.xml
/WEB-INF/config/ (クラスパスが通っている)
/WEB-INF/config/applicationContext.xml
/WEB-INF/data/  (クラスパスが通っていない)
/WEB-INF/data/data.xml

結局知りたいのは、HttpServlet を継承していないクラスから、
上の /WEB-INF/data/data.xml を読む方法なんですが、わからない・・・

>>401
web.xml に登録していなくて、httpServlet を継承していないクラスから
web.xml に記載した初期化パラメータ読むにはどうすればいいんですか?
マジで調べてもわからなかったので、すいませんが教えてください。
403デフォルトの名無しさん:2005/05/17(火) 08:11:38
>>402
HttpServletを継承していない普通のクラスが、
/WEB-INF/なんて、HTTP固有のディレクトリ構造に
依存することを良しとする訳ですか。
404デフォルトの名無しさん:2005/05/17(火) 08:46:55
基本的には普通のクラスはDIコンテナの存在を気にしないようにするね。
405デフォルトの名無しさん:2005/05/17(火) 08:47:10
Servletクラスは絶対パスを取得できるので、そのパスをもらえばいいのでは?
406デフォルトの名無しさん:2005/05/17(火) 09:11:58
サーブレットからApplicationContext自体をもらえばいいね。
407デフォルトの名無しさん:2005/05/17(火) 14:22:24
FileSystemXmlApplicationContextではだめかいな?
408デフォルトの名無しさん:2005/05/17(火) 17:29:46
皆さんどうもありがとうございます。

>>403
/WEB-INF/data にアプリが使うデータファイル置くのは一般的に言って変ですか?
/dataでもいいので普通はそうなら変更を考えます。まだ作法に慣れてないもので勉強します。

>>404
そのクラスは相手がDBじゃなくてファイルなんですがDaoと同じ様な役割をさせたいクラスなんで
他のDaoクラスと同じようにDIコンテナからロードさせてるんですよ。
で、Servletとか関係ない層で動いてるんですが実際のパス取得をどうしようかと悩んでます。
Springのフレームワークからそういうのとれないのかなと考えてましたが、的違いでしたでしょうか?

>>405-407
結局Servletクラスからパスをもらうことにしました。
正直に言ってまだ釈然としないものが残っているんですが、一般的にそうなら慣れるしかないですね
409デフォルトの名無しさん:2005/05/17(火) 21:41:41
いにしえのServlet/JavaBeans流:jarファイル近辺のPropertiesファイルか取得
  :
J2EE流:JNDIからデータの位置を取得
      Connectorアーキテクチャでデータを供給
  :
Spring Framework: ?
410デフォルトの名無しさん:2005/05/17(火) 22:37:48
>>408
ふつうは、普通のクラスはDIコンテナの存在を気にしないでいいようにする
411デフォルトの名無しさん:2005/05/17(火) 22:39:07
>>408
設計が悪いときに無理をしないといけないのは一般的な話だから気にするな。
412デフォルトの名無しさん:2005/05/17(火) 23:28:33
>>409
BeanFactoryから取得
413デフォルトの名無しさん:2005/05/17(火) 23:41:41
BeanFactoryはどこからファイル所在を取得するつもり?
414398:2005/05/17(火) 23:59:50
398です。お忙しいとこ何度もすみません。

>>410
ということは、Spring のアプリケーションコンテキストに依存せず、他の(サーブレットを継承していて
サーバ環境にアクセス可能な)クラスからもらってくる方法はまだマシという理解であってますか?

>>411
設計が悪いのなら直したいのです。>>409さんが書いている様に、Springやその他のDIコンテナ
(すみませんがJ2EE/EJBは知りません)を使ったときの作法があるのなら、この機会に
身に着けたいと思ってます。普通のクラスが外部リソースにアクセスする一般的な方法を
教えてもらえませんか?
415デフォルトの名無しさん:2005/05/18(水) 00:17:47
>>413
そりゃサーバサイドだったら、web.xmlじゃないか?

JNDIだってどっかにJNDIのInicialContextFactoryを指定する(プロパティとか)のと同じ事だとおもうけど。
416デフォルトの名無しさん:2005/05/18(水) 00:44:57
つまり、根っこはプロパティ
417デフォルトの名無しさん:2005/05/18(水) 00:45:37
web.xml使うのは、Servlet層だけの簡単アプリ
418デフォルトの名無しさん:2005/05/19(木) 06:47:36
DIしたオブジェクトから先は、いもづる式にDIするようにして、DIコンテナを意識しないとか。
419デフォルトの名無しさん:2005/05/19(木) 10:10:35
>>418
最初は芋づる式って密な感じがして気持ち悪かったけど
実装してみたら楽すぎて止めらんね
どういった点でデメリットが出てくるんだろうか
420デフォルトの名無しさん:2005/06/01(水) 08:56:52
JSF+Springで設計してんですけど
JSFのバッキングビーンのクラスとビジネスロジックのクラスのそれぞれの役割で

バッキングビーン
値のチェック、変換(この辺はバリデータ、コンバータに
任せるべきなんだろう)などのビジネスロジック呼び出す前の処理
あと、ビジネスロジックの結果の後処理

ビジネスロジック
必要なDAOを呼ぶだけ

こんな風に考えてます。これだとビジネスロジックのクラスが
たいした役割ではないと思うんですけど、DAOのファサード風と考えてよいでしょか

JSF+Springのサンプルアプリがみたいどすえ〜
421デフォルトの名無しさん:2005/06/01(水) 10:05:15
>>420

>JSF+Springのサンプルアプリがみたいどすえ〜

https://appfuse.dev.java.net/
https://equinox.dev.java.net/

漏れ自身が勉強中なので情報提供のみで失礼。
422デフォルトの名無しさん:2005/06/01(水) 10:47:23
>>420
DBのモデルを単に画面に表示する・画面に入力した値をDBに格納する
みたいなシンプルなアプリだとそうなるかもね。
423デフォルトの名無しさん:2005/06/01(水) 10:50:24
sageついでに

>ビジネスロジック呼び出す前の処理
>あと、ビジネスロジックの結果の後処理

どのレベルの処理を言ってるのかわからないけど、
本当にMVCレイヤに置くべき処理なのか再検討してみては?
424デフォルトの名無しさん:2005/06/01(水) 11:58:03

この本どうよ?書評キボンヌ
『実践Spring Framework―J2EE開発を変えるDIコンテナのすべて』
http://www.amazon.co.jp/exec/obidos/ASIN/4822221431

『入門Spring』と『軽快なJava』は読みました。さらに詳しい話を
聞きたい、という目的に使えますかね?
425デフォルトの名無しさん:2005/06/02(木) 22:11:28
SpringがJSFとXULをイイ感じに仲介するフレームワーク作ってくれたら
一杯おごってやりたい。
426デフォルトの名無しさん:2005/06/03(金) 12:15:51
>>425
Mozilla独自のXULより標準規格のXFormsのほうが良いのでは?
MozillaもOpenOffice.orgもXFormsに対応する上に、
Chibaを使えばXForms未対応のブラウザに対して
HTML+JavaScriptに変換してから送信することで
大部分のブラウザに対応できます。

Chiba (サーバーサイドJavaライブラリ)
http://chiba.sourceforge.net/
MozillaとXForms (Mozilla1.8/Firefox1.1で対応予定)
http://www.mozilla-japan.org/projects/xforms/
[XForms 00031] XFormsのためのwiki (村田真氏がMozillaでXForms推進)
http://www2.xml.gr.jp/log.html?MLID=xforms&N=31
427デフォルトの名無しさん:2005/06/03(金) 12:41:43
>>426
XULへの必要性は一般の人にとっては低いとは思うが、
>>425は、ブラウザベースクライアントじゃなくて、リッチクライアントとして
XULを使うことを前提に書いてるんじゃなかろうか。
JSF経由でSwingとかFlashをクライアントにするノリで。
428デフォルトの名無しさん:2005/06/03(金) 12:42:00
sage
429デフォルトの名無しさん:2005/06/22(水) 09:39:06
禿げオヤジは意外とおとなしかったな。
430デフォルトの名無しさん:2005/06/25(土) 15:34:01
海外では50%以上のプロジェクトで使われていて
ほぼデファクトスタンダードらしいが、なぜこのスレは伸びないの?
431デフォルトの名無しさん:2005/06/25(土) 18:21:20
まあ、DIスレも伸び悩んでるし、
カテゴリとしてマイナーなんでは。日本では。
432デフォルトの名無しさん:2005/06/26(日) 08:56:09
>>430
DIは、使い始めれば空気みたいなもんで、とくに議論することもなくなるから。
433デフォルトの名無しさん:2005/06/26(日) 16:54:53
つーかSpringがホントに便利なのって純粋なtype2,type3のInjectionその物より、
コンテナが作ったProxyに対するAOPでしょ?
434デフォルトの名無しさん:2005/06/26(日) 22:33:01
DIってのは、そういうものを便利にするための裏方だからな。
435デフォルトの名無しさん:2005/06/27(月) 10:43:51
このスレ生きてるみたいだから質問させてくれ

proxyでAspectをweavingする事の弱点って何だ?
漏れが把握しているのは

1.自分自身のメソッドを呼び出すとAspectがかからない。
2.visitorみたくthisを渡して処理させるとAspectがかからない。

他に注意点ある?
436デフォルトの名無しさん:2005/06/27(月) 11:31:59
ものすごくはらへった。
437デフォルトの名無しさん:2005/06/27(月) 11:41:45
俺もだ。
438デフォルトの名無しさん:2005/06/27(月) 13:49:43
いまさら同意。
439デフォルトの名無しさん:2005/07/05(火) 11:09:42
1.2.2リリース記念
440デフォルトの名無しさん:2005/07/05(火) 13:38:30
>>439
どこが変わったの?
441439:2005/07/05(火) 15:43:58
詳しく見てない&試してないけど、注目した一文は;

『added dedicated support for Hibernate Annotation 3.0 beta 2』
442デフォルトの名無しさん:2005/07/05(火) 17:36:12
>>441
でも、前からHibernate Annotations使えてたよ。
443デフォルトの名無しさん:2005/07/05(火) 22:32:17
つうか、Doclet のことを言ってるんじゃあるまいな。
444デフォルトの名無しさん:2005/07/06(水) 03:19:27
アノテーションってそんなにいいもんなんでしょうか。
DIでせっかくコードから煩雑な記述を追い出したのに、
またコード中に埋め込んで、回帰と言うか退化と言うか。

コンパイラに対する指示を埋め込むのは意義が大きいと思うけど。
445デフォルトの名無しさん:2005/07/07(木) 10:24:52
>>443
ここの最後にやりかた書いてあるよ。
ttp://www.fk.urban.ne.jp/home/kishida/kouza/hibernateanno.html
446デフォルトの名無しさん:2005/07/07(木) 10:25:46
>>444
アノテーションは、XMLより記述が楽だし、ソースから得た型の情報を使うことで記述量自体が少なくできてるから、そう煩雑でもない。
クラスに関する情報をソースファイルに一元化できる効果もある。
なによりコンパイラによる静的チェックが効くし、Javaソースエディタでの補完が効く。
447デフォルトの名無しさん:2005/07/08(金) 22:00:29
DIってテストしやすくなる?
単体まではいいけど、結合で結局アボーンな感じがするのだけど。

まぁつまるところは設計能力か・・・
448デフォルトの名無しさん:2005/07/10(日) 00:55:34
アボーンって、具体的にはどういう問題がでてくると思う?
449デフォルトの名無しさん:2005/07/13(水) 20:03:02
TransactionProxyFactoryBeanにtagetってフィールドがあるんですけど、これシングルトンなんです。
マルチスレッドでここに処理が殺到した場合、スレッドセーフにトランザクションさばけるんでしょうか?
教えてください。

TransactionProxyFactoryBean
http://www.springframework.org/docs/api/org/springframework/transaction/interceptor/TransactionProxyFactoryBean.html
450デフォルトの名無しさん:2005/07/13(水) 20:42:56
>449

そりゃ、targetしだいだろ。targetがスレッドセーフなら、問題ない。
451名無しさん:2005/07/13(水) 21:00:03
同時に異なるスレッドの異なるtargetがシングルトンのTransactionProxyFactoryBeanにセットされにきたらどうなりますか?
452デフォルトの名無しさん:2005/07/13(水) 23:18:19
オブジェクトの数とスレッド数は別ものとして考えないと。

ちゃんと考えられてるだろうから、
単一のオブジェクトの同じメソッドを
複数のスレッドが並行して駆け抜けることは全然OKなように
つくられてるはず・・・(たぶん)
453デフォルトの名無しさん:2005/07/14(木) 16:28:52
蒼ざ(ry
454デフォルトの名無しさん:2005/07/14(木) 19:22:10
どうやらtargetもシングルトンじゃないとダメみたいですね。
455デフォルトの名無しさん:2005/07/16(土) 17:28:30
>>462
それはプラットフォームによる。
・GUIは大抵そう。(OSから飛んでくるイベントの処理は、イベント毎の状態保持が必要。
            もっとも、同じ要素に複数イベント飛んできたら、単に順次処理する事が多いんで、
            本当のスレッド並列処理はそんなに必要ないと思う。)
・Webアプリ周りも大抵そう。(例の(Statefull)Servletあたりが有名)
それ以外の場面で、常にインスタンスとスレッドを別に考えるのは、どーかと思う。
結局インスタンス数を減らしてまでメモリー消費を避けたい特殊な場面(大規模アプリ、組込みアプリ)
に固有のやりかただと思う。
456455:2005/07/16(土) 17:30:24
ああ>>451-452の流れか。>>455は取り消し(ワラ
457デフォルトの名無しさん:2005/07/19(火) 10:34:04
というか誰にレスしてんだ
458デフォルトの名無しさん:2005/07/24(日) 22:38:13
これが最近有名なJSFって奴ね。
Javaは最新の技術追うのが大変(@@)
459デフォルトの名無しさん:2005/07/25(月) 01:15:53
==============================
キチガイが狂った独り言を書き込み中
==============================
460デフォルトの名無しさん:2005/07/25(月) 07:37:48
>>441
applicationContext.xmlの中でHibernate Annotationsの設定がかけるようになるってことみたいだね。
LocalSessionFactoryBeanを使う場合は、hibernate.cfg.xmlを書いておく必要があった。
461デフォルトの名無しさん:2005/08/06(土) 22:29:31
Spring1.2.3でProxyFactoryBean使おうと思って

[ sample.xml ]
<beans>
<bean id="test" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyTargetClass"><value>true</value></property>
<property name="target"><ref local="person"/></property>
<property name="interceptorNames"><value>advisor</value></property>
</bean>
…略…
</beans>

[ sample.java ]
BeanFactory factory = new ClassPathXmlApplicationContext("/com/mamezou/aop/proxydi/sample.xml");
Person person = (Person) factory.getBean("test");
person.setName("Hoge");

ってやるとCGLIBがねぇよってエラーになって、
CGLIB2.1のjarクラスパスに突っ込んでやるとエラーになるんだけど…。

対処方法ってなんかある?
462461:2005/08/08(月) 00:45:20
事故解決しますた。orz
463デフォルトの名無しさん:2005/08/08(月) 01:32:41
いちお、解決方法きぼんぬ
464デフォルトの名無しさん:2005/08/08(月) 12:18:04
今度は aopallience がねえよって怒られて
それを修正したとかそんな流れ?
465461:2005/08/08(月) 20:07:27
遅レス、スマソ。

CGLIB2.1入れても
java.lang.NoClassDefFoundError: org/objectweb/asm/Type
って出たので、ASM入れただけです。

_| ̄|○|||

ASMは1.5.3入れました。2.0だと
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
が出ます故。これで動いたは動いたケド、正しいかどうかは…。
466デフォルトの名無しさん:2005/08/08(月) 20:27:13
>>464
だいたいあってたね。
467デフォルトの名無しさん:2005/08/10(水) 12:47:00
だいたいってことは、正確にはどーすればよいわけ?
468デフォルトの名無しさん:2005/08/10(水) 20:51:17
CGLIB とかのライブラリは
Spring 付属の jar をぶっこんだ?
まだ 1.1.7 使ってて 1.2 系は試してないけど
付属の jar 入れとけば間違いは少ないと思う。
469461:2005/08/10(水) 20:53:28
ageます。スマソ。

>>467
asm-1.5.3.jar
cglib-2.1_2.jar
をWEB-INF/lib/に放り込んでクラスパス通すだけでつ。
「ProxyFactoryBean使うときはCGLIB入れろ」
ってドキュメントに書いてあったのですが、
CGLIB使うときはASM入れないないとNGなんで、
ttp://prdownloads.sourceforge.net/cglib/cglib-2.1_2.jar?download
ttp://forge.objectweb.org/project/download.php?group_id=23&file_id=3084
のミラーからDLしてください。

…というコトではない?
470デフォルトの名無しさん:2005/08/10(水) 21:14:42
with-dependency の方のディストリビューション落とせば
添付の jar を必要に応じて加えるだけで
外部のライブラリは不要だったと思うんだけど。。
471461:2005/08/10(水) 21:47:00
>>470
サンクス。

>with-dependency
こっちじゃなくて、spring-framework-1.2.3.zip落としちゃって…。

ttp://www.techscore.com/tech/Others/Spring/1.html
にしっかり書いてありました。orz
472デフォルトの名無しさん:2005/08/19(金) 12:55:20
Spring Beans XML Editor (Spring IDE for Eclipse)
ttp://springide.org/project/wiki/BeansXmlEditor
Screen Shot 見る感じだと
とりあえず欲しい機能は結構揃っているような。
473デフォルトの名無しさん:2005/08/25(木) 16:33:37
474デフォルトの名無しさん:2005/09/07(水) 09:38:35
475デフォルトの名無しさん:2005/09/07(水) 09:53:15
Hibernate3 でトランザクション周りが結構変わって、
Spring とかなり方向違うなぁと感じたりはする。

Hiernate の Session Factory から getCurrentSession() 呼んだら
思いっきり怒られたりとか。
JTA が必要だったとは知らなかった。

なんかそんなことが続いてる。。
476デフォルトの名無しさん:2005/09/13(火) 23:10:59
Springを勉強してます。
サーブレットにDIしたいクラスのsetter作って
動かしてみたのですが、NullPointerException...
サーブレットではsetterインジェクション(?)できないんですか?
ContextからgetBeanすれば普通にとれるんですが。。
477デフォルトの名無しさん:2005/09/14(水) 00:14:32
>>476

普通はBeanにsetter/getter作るでしょ。
むしろ、setter/getter作ると自然にBeanになる。
MVCからやり直s(ry
478デフォルトの名無しさん:2005/09/14(水) 00:27:50
>>476
サーブレットでDIするためにどういう設定したの?
479デフォルトの名無しさん:2005/09/14(水) 00:40:33
>476
Webコンテナが管理しているサーブレットインスタンスを
そのサーブレットが呼ばれる前に,アプリ側から取得する方法があるとでも?
480デフォルトの名無しさん:2005/09/14(水) 01:39:52
しかし、いろんなこと考える奴がいるもんだな・・・ある意味感心したw
481デフォルトの名無しさん:2005/09/14(水) 02:41:41
>>479
web.xmlにはプロキシサーブレットを登録して、そのときパラメータで実際のサーブレットクラスを指定するような実装にすればできんでもない。
482476:2005/09/15(木) 01:29:23
>>477-481
勉強不足でごめんなさい。
サーブレットからビジネスロジックを呼び出すのに
自分でビジネスロジックのインスタンスを作らずに、
setterを作って、ビジネスロジックをDIしようとしたのですが。。。
やっぱり無理なんですかね?
483デフォルトの名無しさん:2005/09/15(木) 02:32:53
>>482
便乗してTapestryの宣伝でもしてみるか。

Tapestry-4.0だと、それに相当する事が出来るようになってる。
Tapestry-4.0自体はDIコンテナにHiveMind使ってるけど、
HiveMindとSpringを連携させる方法もあるので、
Springで管理してるオブジェクトをTapestryのページや
コンポーネントにDIすることできて便利。
484デフォルトの名無しさん:2005/09/15(木) 03:15:06
>>483
日本語のドキュメントはどこにありますか?
485デフォルトの名無しさん:2005/09/15(木) 16:21:13
あなたはいぢわるな人だ
486デフォルトの名無しさん:2005/09/19(月) 09:44:33
で、実際に開発で使ってる実績ってあるの?
Spring。
487デフォルトの名無しさん:2005/09/19(月) 09:47:35
何をもって実績と呼ぶかを定義しないと
そりゃどっかで使ってるさ。で終わってしまう。
488デフォルトの名無しさん:2005/09/19(月) 19:12:43
どっかって・・・。
どこでも使ってないんじゃないの、と思ってるんだが。
489デフォルトの名無しさん:2005/09/19(月) 20:59:49
おれんとこの現場は使ってる
490デフォルトの名無しさん:2005/09/19(月) 21:06:20
>>488
そうかもね。

というか、DI自体にメリットというか魅力を感じない。
いや、考え方とかそういったのは素晴らしいと思うよ。

だけど、実際には客先にコストダウンとかのメリットがある訳じゃないし、
実行速度が上がるわけじゃない。
まぁ、テストを簡単に行えて品質は上がるのかもしれない。


だけど、問題は、DI使ったからといって、修正とかが楽になるかと言えば、答えはNO。
大抵の修正はメソッドの呼び出しとか、そういったものまで結構変更になる。

なのに、下手にDI使ってインターフェースとか定義してたら、
結局インターフェースもクラスも関連するもの全部修正しないといけない。

つまり、殆どの場合、DI使うことにより、修正の手間は倍以上になる。
作る時に、無駄ともいえるものを作るんだから、下手したら4倍近い手間。

世間がこれからどうなるか知らないが、すくなくても俺の会社では
DIは明示的には使わないという方向で決まった。
(ライブラリの内部とかで使われてるとかは知ったこっちゃ無い)
491デフォルトの名無しさん:2005/09/19(月) 22:21:44
インターフェイスをきるときには、システム将来計画等から予想して、
ある程度変更になりそうな部分を見極めとかないと意味は無い
DIか否かより、結局は設計の問題になると思うけど
492デフォルトの名無しさん:2005/09/19(月) 23:06:57
>>490
君の言ってることはDIとは直接関係ないかなぁ。
単にインターフェースへのプログラミングってやつの是非を語っているだけではないのか?
まぁ、それも確かに賛否両論よく議論されているネタだけどね

DI使うと部品作って組み立てるプロセスが面白くて、楽しく開発は出来るんだけど、
アホには使いこなせないからあまりポピュラーにはならないかもしれない
493デフォルトの名無しさん:2005/09/20(火) 00:09:30
SimpleFormControllerでvalidatorを行おうとしています。

<bean id="confirmEntryController" class="controller.ConfirmEntryController">
<property name="commandClass"><value>model_entity.User</value></property>
<property name="commandName"><value>user</value></property>
<property name="validator"><ref local="userValidator"/></property>
<property name="formView"><value>userEntryView</value></property>
<property name="successView"><value>confirmView</value></property>
</bean>

エラーを表示するのに、spring:bindを利用しているのですが、
-------------entry.jsp-----------------------------------------
<spring:bind path="user.name">
<FONT color="#FF0000"><c:out value="${status.errorMessage}"/></FONT>
</spring:bind>

entry.jspを表示するときに、次のようなエラーになってしまいます。
javax.servlet.ServletException: Neither Errors instance nor plain target object for bean name 'command' available as request attribute

なにか見落としがあるのでしょうか?
あうあぅ締め切りがあさってです。助けてください・・・
494デフォルトの名無しさん:2005/09/20(火) 00:11:05
あーーすみません
エラーメッセージがまちがっていました。。
javax.servlet.ServletException: Neither Errors instance nor plain target object for bean name 'user' available as request attribute
495デフォルトの名無しさん:2005/09/20(火) 01:41:00
まだ490みたいなこと言う人居たのか。すげえな。世の中って。
496デフォルトの名無しさん:2005/09/20(火) 02:29:53
MVC フレームワーク使ったことないんで
(Viewは絶対にVelocityが良い派。
コントローラはStrutsがベタ打ちっぽくて好き派。)
大きく外してるかも知れませんが

ttp://64.233.179.104/search?q=cache:LDvUSmAKRi8J:xlegend.dip.jp/~hamasyou/archives/Engineer-Soul/springframeworkneooiaieaadiiocmvcweb.php+spring.bind+ServletException+Neither+instance&hl=ja
>Bind 時に
>javax.servlet.ServletException: Neither Errors instance nor plain target object for bean name 《コマンド名》 available as request attribute
>という例外が発生する事があります。 これは、Bind するコマンドオブジェクトがリクエストに保存されていないのが原因です。
>コントローラに SimpleFormController を使っている場合、processFormSubmission() メソッドで、
>super.onSumit(request, response, command, errors) を呼び出すと、例外は発生しなくなりました。参考までに。
ConfirmEntryController でそれに類する処理が必要かどうか、存在するのかの確認と、
デバッガで動かしてリクエストの中身を覗いてみてはどうでしょうか?
497デフォルトの名無しさん:2005/09/20(火) 20:30:51
>>495
そうでもないんじゃない?

実際、ある程度予測できる範囲やちょっとした修正なら、DIだろうが何だろうが修正は簡単。
だけど、大抵の場合って、そもそもの仕様から引っくり返されるんだよね。

『ごめん。やっぱりこの機能も追加して』って一言で。

そうなると、確かに>>490の言うような状態に陥る。
498デフォルトの名無しさん:2005/09/21(水) 01:34:49
インターフェース直して、テストコード直して、実装直す。
簡単ジャマイカ
499デフォルトの名無しさん:2005/09/21(水) 01:44:41
>>497
顧客の「やっぱり」が予想できる場合と出来ない場合で違うと思う
予想できない場合は、たとえどんな作り方をしてても無駄なわけだし
500デフォルトの名無しさん:2005/09/21(水) 03:19:34
DIの肝って、「実装を交換できる」ってこと。
あとは想像力さえあれば、大抵の状況は、インターフェイスの修正無しになんとかできるはずだが。
まぁ、インターフェイスの設計がへぼいとどうにもならない場合があるけど。
501デフォルトの名無しさん:2005/09/21(水) 05:36:55
べつに、実装交換しなくても便利なんだけど。
実際のアプリケーションでDIでつなげたクラス同士を切り替えることなんてほとんどない。
それでも、つなげることをやってもらえるだけで便利。
502デフォルトの名無しさん:2005/09/21(水) 23:44:25
>>501
コードでつなげる処理を書くよりも便利なの?

やっぱり自分で試して体感してみるしかないかな。
503デフォルトの名無しさん:2005/09/22(木) 06:51:23
自分でさわらずに批判してもしかたないよ。
504デフォルトの名無しさん:2005/09/22(木) 09:06:33
DI に関する話をココでやって
Springの話をDIスレでやると言う
ねじれ現象が起きてるのは何故ですか?
505デフォルトの名無しさん:2005/09/22(木) 11:53:07
ながいものはねじれるというのが物理法則の基本だから。
506デフォルトの名無しさん:2005/09/23(金) 09:54:47
そもそもDIスレなんてのかあったのかって話。
507デフォルトの名無しさん:2005/09/23(金) 17:54:03
>>506
Dependncy Injectionを語るスレ
http://pc8.2ch.net/test/read.cgi/tech/1099827125/
508デフォルトの名無しさん:2005/09/23(金) 23:10:30
多少綴りが間違ってるのと、DI という略語を併記しなかった失策っぽい。
509デフォルトの名無しさん:2005/09/24(土) 03:31:24
>>507
一月半もレスないのか。
S2スレはFAQの件で盛り上がっているというのに……。
510デフォルトの名無しさん:2005/09/24(土) 03:33:09
本題ではあまりもりあがらない件
511デフォルトの名無しさん:2005/10/05(水) 11:18:48
>>449の件って、>>454が正解なんですか?
だれか解説お願いします。
512デフォルトの名無しさん:2005/10/19(水) 09:37:25
こんな記事があったんですが、Springが主流になりますかね?
ttp://www-128.ibm.com/developerworks/java/library/j-sr2.html
513デフォルトの名無しさん:2005/10/19(水) 10:43:13
>>512
読めん!
514512じゃないけど:2005/10/19(水) 16:48:17
515デフォルトの名無しさん:2005/10/19(水) 17:50:56
>>514
読める!
516デフォルトの名無しさん:2005/10/23(日) 21:45:48
おまいら、SpringのTransaction管理って使ってますか?
517デフォルトの名無しさん:2005/10/23(日) 22:15:15
使ってない。
むしろ自分でトランザクションコード書いた方が安心する。
別に大した労力じゃないし。
分散トランザクションやろうとしたら別だけど。
518デフォルトの名無しさん:2005/10/23(日) 22:20:08
そしてデッドロック
519デフォルトの名無しさん:2005/10/23(日) 22:26:25
デッドロックに対して気をつけなきゃいけないことは、トランザクション管理も
ハードコーディングも一緒なり
520デフォルトの名無しさん:2005/10/24(月) 00:00:28
>>517
try/finally/try/catchをいちいち書くの面倒じゃない?
521デフォルトの名無しさん:2005/10/24(月) 00:22:16
>>520
書くと安心するw
いたるところで書くわけでもないし苦痛でもない。
522デフォルトの名無しさん:2005/10/24(月) 14:16:34
ひとりとかふたりで開発するならそれでもいいんだけどねぇ。
人数多くなってわけわかんないコーダーが含まれるようになると、それじゃ怖い。
523デフォルトの名無しさん:2005/10/24(月) 15:15:19
投げて上で処理するとか。
一箇所で処理できる仕組みであれば何でもいいけどな漏れは。
524デフォルトの名無しさん:2005/10/24(月) 17:24:13
投げて上で処理ってどういうこと?
上でconnection.rollback();
を実装するという意味だよな?
525デフォルトの名無しさん:2005/10/24(月) 21:00:01
>>523
その為にAspectとか有るんじゃないか?
526デフォルトの名無しさん:2005/10/24(月) 21:21:21
そこでEntity Beanですよ。
527デフォルトの名無しさん:2005/10/24(月) 23:28:43
コミット、ロールバックもろもろ書いてあるメイン処理テンプレートソース
用意してコレ使えという。
528デフォルトの名無しさん:2005/10/24(月) 23:32:53
要するにAOPは使いたくないってこと?
529デフォルトの名無しさん:2005/10/25(火) 00:27:49
トランザクションだけはコードで書きたい。
530デフォルトの名無しさん:2005/10/25(火) 09:47:45
テンプレートを使うやり方ってtransactionScriptみたいなヤツ?
あれって複数Daoに更新命令メッセージ渡したい時にうまくasid守れるのだっけ?
ドアホな質問だったらスマソ

>>529
自作インタセプタでAOPするのも嫌なの?
531デフォルトの名無しさん:2005/10/25(火) 10:35:43
ACID
532530:2005/10/25(火) 11:30:31
し、しまった、ゴメン恥sage
533デフォルトの名無しさん:2005/10/25(火) 21:41:41
Seasarを選ばなかったおまいらは非国民
534デフォルトの名無しさん:2005/10/25(火) 21:55:08
日本で作ったところくらいしか、とりたてて特徴がないからなぁ。
逆にSeasar選ぶのは国粋主義だとは言える。
535デフォルトの名無しさん:2005/10/25(火) 23:30:51
>>530
>>インタセプタ
それならいいかも。コードかけるから。
536デフォルトの名無しさん:2005/10/26(水) 01:28:04
>>534
国粋主義が悪いかのように匂わす藻舞は共産主義者
537デフォルトの名無しさん:2005/10/26(水) 01:34:42
>>536
ウヨ厨発見。
「国粋主義」ってそもそも悪口だし。悪いに決まってる。
538デフォルトの名無しさん:2005/10/26(水) 10:14:29
Javaが日本発な言語でない以上、
Seasar2もSpringもその意味では五十歩百歩だろ。
使いやすい方使えばいいのよ。
539デフォルトの名無しさん:2005/10/26(水) 13:35:27
>>534
どっちがいいのかは個人の判断だと思うけど、
かなり違うよSpringとSeasarは。

特徴がないと思っているのは単なる勉強不足。
540デフォルトの名無しさん:2005/10/26(水) 16:42:29
>539
で、両者の顕著な違いってどの辺り?
軽量DIコンテナ+AOPサポートって言う
コアな考え方が同一な以上、
枝葉は多少異なるだろうけど、
幹の部分は大差なく感じるんですが。

それぞれのサブプロジェクト(MVCフレームワークとか)は
モデルが大きく異なるだろうけど、限りなく枝葉な問題だし(私には)。
そこの違いがでかいんだよと言われると、大変困るが。
541デフォルトの名無しさん:2005/10/26(水) 16:59:35
ロジックとかDAOを呼び出すだけで使ってる分にはあまり差を感じないけどな。
542デフォルトの名無しさん:2005/10/26(水) 17:18:39
>>540
DIだとあまり変わらないかもね。

ただ、Seasarの新しいバージョンだと、DIが結構変わったみたい。
XMLはほとんど書かないらしい。

AOPは結構違う。
JavaWorldに出てたけど、同じAOP AllianceのAPIにもとづいているとは
思えないくらいに設定の仕方が違う。
543デフォルトの名無しさん:2005/10/26(水) 20:24:41
設定方法なんか、どうだってなるわけだが。
544デフォルトの名無しさん:2005/10/27(木) 00:49:30
DIやAOPよりも、自前でJTA実装用意してるかどうかが大きい気がする
Tomcatやローカルアプリに対して、安定したJTA環境+AOPによる宣言トランザクションを提供出来るというのが
自分から見たS2の売りかな?
Springも外部のJTA実装を用意すれば一緒なんだけど、出来ればSpring内で実装まで用意して欲しい
545デフォルトの名無しさん:2005/10/27(木) 09:37:46
ん〜、煽りじゃなくて教えて欲しいのだが、自前JTAってそんなにいいの?

どうせAP鯖上で動くならそのAP鯖のJTA使えばいいと思う。
つっか、AP鯖のJTA使うと、提供されている管理画面を
使えちゃったりして便利なんだよね。使用状況とか一目瞭然だし。
546デフォルトの名無しさん:2005/10/27(木) 11:05:18
>>545
> どうせAP鯖上で動くならそのAP鯖のJTA使えばいいと思う。

AP鯖ならそれ使えばよろし。
「Tomcatやローカルアプリ」の場合の話。
547デフォルトの名無しさん:2005/10/27(木) 11:50:06
JOTMとか?

というか部品を用意してあるかどうかなんて些細な差と言うか、
そもそも比較項目にすらならん気がする。

224 にも張られた内容見るといろいろ差があるなとは思う。
結局AOPに対するアプローチが一番の違いか?
Spring はどこまでも POJO マンセーな感じ。
良い意味でも悪い意味でも。
548デフォルトの名無しさん:2005/10/27(木) 12:38:18
>>547
JTA実装するかしないかの差は、両者のトランザクション管理に対する考えの違いでもある。
JTAを標準としてJDBCトランザクションを排除していこうとしてるのがS2
JDBCもJTAも、DIコンテナがラップして利用者に統一的に使って貰おうとしてるのがSpring
549デフォルトの名無しさん:2005/10/27(木) 12:39:51
>>547
POJOマンセーはSeasarのほう。
Springには、何かしたかったら、こういうインターフェースを実装しろ
というのがいろいろあるけど、Seasarはそういうのがほとんど無い。
550デフォルトの名無しさん:2005/10/28(金) 01:25:53
jsfを使うんだけどspringはどの段階で作り始めればいいんですか?
ある程度jspとかbeanとか決まってから?
551デフォルトの名無しさん:2005/10/28(金) 09:21:16
>>550
君の脳内が整理されたら。
552デフォルトの名無しさん:2005/10/28(金) 10:56:12
Spring 自体は作らんだろ。作らんよね?
Spring 自体は作りませんね。
553デフォルトの名無しさん:2005/10/28(金) 14:25:10
そんなレスはいらんねん
554デフォルトの名無しさん:2005/10/28(金) 18:52:00
なんかすごいヤシが来たな、ワクワク
555デフォルトの名無しさん:2005/10/30(日) 17:47:22
(・∀・)ハイーキョ
556デフォルトの名無しさん:2005/10/30(日) 21:02:51
>>555
気が早いよ。ヽ(`Д´)ノ
もう少しまってろ。
557デフォルトの名無しさん:2005/10/31(月) 01:27:45
保全
558デフォルトの名無しさん:2005/10/31(月) 14:31:11
ところで、Springを使ってサービスを2つ起動しているけど
片方のサービスを止めたり、動かしたりする場合のサンプリングが解らず・・・・

筆不精で表現が不十分ならすまん・・・。
559デフォルトの名無しさん:2005/10/31(月) 14:49:38
>>558
サービスとSpringは直接関係ないだろ。
560デフォルトの名無しさん:2005/10/31(月) 14:50:21
つうか、サンプリングって新しいな、おい。
561デフォルトの名無しさん:2005/11/01(火) 13:36:58
統計やってるんだろう
562デフォルトの名無しさん:2005/11/01(火) 14:30:30
springとhibernateを使ってるのですが、以下のようなコードでDBからデータを取得した時に
ログ情報はどうやって出すのでしょうか?
出したい情報としては、どのテーブルに、どんな条件で取得or更新処理等を行っているかです。
SQLの場合は、SQLそのものをログに出せば良かったのですが、spring+hibernateになった場合
SQLの時と同等の内容をログに出力する方法が分からなくなってしまいました…。

Hoge hoge = (Hoge)getHibernateTemplate().get(Hoge.class, primaryKey);

このgetの中でやっている事をログに出したいです。
563デフォルトの名無しさん:2005/11/01(火) 19:08:20
Hibernate の設定でログにSQLを吐くってのがあったはず。
564デフォルトの名無しさん:2005/11/02(水) 00:43:48
springの設定でhibernatePropertiesに
<prop key="hibernate.show_sql">true</prop>
を設定
565デフォルトの名無しさん:2005/11/02(水) 10:31:05
>>563,564

ありがとうございます!
おかげさまで、SQLは出力されるようになったのですが、
出力されるSQLのWHERE句の条件部分が、実際の値に置換する前の「?」に
なってしまいます….
この「?」の部分が実際の値に置換された状態のSQLを出力する事は出来ないのでしょうか?
566デフォルトの名無しさん:2005/11/05(土) 20:04:59
さっぱり関係ないんだけど、PreparedStatementに値が入れられた後のSQLを
吐き出させられないかと思うことはよくあるな。
567デフォルトの名無しさん:2005/11/05(土) 20:42:17
DB側でログだすしかないね。
JDBC4でやってくれないのかなぁ
568デフォルトの名無しさん:2005/11/06(日) 00:19:10
そもそもJDBC内で完全なSQL生成してるわけじゃないから無理だよな。
そんなことしてたらPrepareStatement意味ない。。
569デフォルトの名無しさん:2005/11/06(日) 01:52:33
なんかのクラスのログレベルを下げれば、
どんなパラメータを入れたか確認できるけど一応。
どのクラスかは会社に居ないので確認できましぇん
570デフォルトの名無しさん:2005/11/06(日) 15:24:20
Spring + Hibernate3 でテストしてた時は
パラメータも表示されてたと記憶してるが。
571デフォルトの名無しさん:2005/11/07(月) 09:55:19
ドライバにトレースオプションとか無いの?
572デフォルトの名無しさん:2005/11/08(火) 01:15:17
>>566
p6spyってのを使えばできるらしいよ。
573sage:2005/11/13(日) 01:07:52
SpringWebMVC使ってるんだけど、
フォーム上の二つの入力フィールドの値を、
コマンドオブジェクトの一つのプロパティにBindすることってできないんだろうか?
574デフォルトの名無しさん:2005/11/13(日) 01:12:45
JavaScriptFrameworkかとおもた
575デフォルトの名無しさん:2005/11/13(日) 13:14:15
よし、今からSpringを勉強するよ。
指示をくれ
とりあえずダウンロードしてくるわ
576デフォルトの名無しさん:2005/11/13(日) 13:35:02
spring-framework-1.2.5-with-dependencies.zipをダウンロードして
Eclipseに展開
その間に
http://www.atmarkit.co.jp/fjava/rensai3/springdi01/springdi01_1.html
これを読んでる
577デフォルトの名無しさん:2005/11/13(日) 13:39:20
なにこれ?
あほですか?
ただ、指定のクラスを生成して、ついでにプロパティも入れるというだけ?
くだらん。
ただのFactoryじゃん。
messageを生成時に注入してHello World!かよ。
おめでてーな。
まあ、記事が馬鹿だということを予想して付属のSampleためしてくるよ。
578デフォルトの名無しさん:2005/11/13(日) 13:43:19
>> Spring Frameworkで理解するDI(1)
(2)は、まだー?
579デフォルトの名無しさん:2005/11/13(日) 13:53:10
>>578
もちろん1,2,3を読んでの感想ね。
いま、ExampleのCountryを読んでるんだけど、
いきなりソースを読んでも意味わからんわ。

それぞれのクラスが他に依存しないってことは
Utilを読むみたいに、いきなり読めるってことかと思ってしまった。

今から/samples/countries/*.txtを読んでデプロイして実行してみる。
580デフォルトの名無しさん:2005/11/13(日) 14:08:34
日本用のpropertiesがないからぬるぽい。
適当になぶる
581デフォルトの名無しさん:2005/11/13(日) 14:59:14
解説しよう
なぶる = 触る
582デフォルトの名無しさん:2005/11/13(日) 16:09:48
解説ありがとう
今から外出しないといけなくなった
とりあえずどんな実装をしていくかという
癖みたいなものはわかった。
出たついでに本屋にでも寄って理論を立ち読みしてくるわ
583デフォルトの名無しさん:2005/11/13(日) 18:13:33
ぬるぽ
584デフォルトの名無しさん:2005/11/13(日) 22:40:28
帰ってきたよ
理論読んでくるの忘れたから、検索するわ
あとで
585デフォルトの名無しさん:2005/11/17(木) 20:48:05
1.2.6記念
586デフォルトの名無しさん:2005/11/28(月) 11:55:56
閑古鳥だな
587デフォルトの名無しさん:2005/11/28(月) 12:00:14
DIは結局流行り物だってこった。

DIスレもSeasarスレも活気ないしな。
588デフォルトの名無しさん:2005/11/28(月) 12:06:55
需要は大いにあるけど、
言語レベルでの制約によるメリットが一部損なうことや、
リファクタリングがかなりし難くなるところがやはり気に食わないな。
589デフォルトの名無しさん:2005/11/28(月) 12:33:48
DIコンテナがなくても
SetterInjectionとFactoryでいいけどさ。
AOPと親和力が高いのが魅力的だよね。
抜け出せない。
遅いのに。
590デフォルトの名無しさん:2005/11/28(月) 13:15:50
つか、もうEJB3でおけ
591デフォルトの名無しさん:2005/11/28(月) 13:18:05
でも「EJB?ハァ?これからはSpringだろ」
てのを受けて試しにSpring触って第一印象が>>577ってパターンが結構多い気がするな。
592デフォルトの名無しさん:2005/11/28(月) 20:17:43
フロントしか弄ってない俺には、Strutsの焼き直し。
593デフォルトの名無しさん:2005/11/28(月) 21:17:10
今って分散環境だとビジネスロジックには
何が一番使われてんの?
594デフォルトの名無しさん:2005/11/28(月) 21:21:10
あ、これじゃいみわかんねえや
モデルだった
595デフォルトの名無しさん:2005/11/28(月) 22:32:06
>>592
Strutsとは全くかぶってないので、StrutsをどうやきなおしてもSpringにならない・・・
596デフォルトの名無しさん:2005/11/28(月) 22:33:25
>>595
フロントコントローラ、まんまStrutsなんだが。
597デフォルトの名無しさん:2005/11/29(火) 00:09:53
これってどこがいいの?
XMLからクラスが生成できるだけ?
598デフォルトの名無しさん:2005/11/29(火) 00:22:41
>>595
次の次ぐらいのStrutsはWebWorkになるそうだぞ。
599デフォルトの名無しさん:2005/11/29(火) 00:25:00
ん?IDEと統合するのを目標に作られたJSFがあるからそれはないべ?
600デフォルトの名無しさん:2005/11/29(火) 00:34:16
601デフォルトの名無しさん:2005/11/29(火) 00:37:30
602デフォルトの名無しさん:2005/11/29(火) 00:42:46
>>600-601
えーーーー。
なんかすっげー違和感・・・。
603デフォルトの名無しさん:2005/11/29(火) 12:19:40
>リファクタリングがかなりし難くなる
なるか?
設定ファイル書き直しの手間が云々って意味?
604デフォルトの名無しさん:2005/12/01(木) 20:40:22
SpringFrameworkのDefaultIntroductionAdvisorと
DelegatingIntroductionInterceptor の使い方がやっと分かった。

AOPヽ(´ー`)ノマンセー
605デフォルトの名無しさん:2005/12/06(火) 10:25:25
使う場所を見つけるまでがAOPです
606デフォルトの名無しさん:2005/12/08(木) 08:03:22
AOPとDIと、どっちが偉いの?
607デフォルトの名無しさん:2005/12/08(木) 08:41:40
別々の話だから、比べてもしかたない。
608デフォルトの名無しさん:2005/12/08(木) 09:35:46
どっちも偉くはないですが
609デフォルトの名無しさん:2005/12/10(土) 23:50:35
http://muimi.com/j/aop/spring/
SpringのHello Worldでどのサイトをみても
これ以上のことがどこも書いていないのですが
どういった点が優れているのでしょうか?

いまいちこのフレームワークが他よりも優れいているというメリットが見えないのですが
また具体的に何が得意とかあるのでしょうか?
610デフォルトの名無しさん:2005/12/11(日) 01:16:39
他ってなんのことを言ってるの?
611デフォルトの名無しさん:2005/12/11(日) 15:13:00
みなさん実際に実務だとどんなところにSpring使ってます?
全面的に使ってたりする?
612デフォルトの名無しさん:2005/12/11(日) 15:47:19
Springは使うなら全面的だろ。
613デフォルトの名無しさん:2005/12/11(日) 15:49:33
>>612
大根としてつかうだけならどこか1部だけでもOKでは。
614デフォルトの名無しさん:2005/12/11(日) 16:10:46
>>613
たとえばStruts使う場合だと、すべてのActionをSpringに委譲するし。
615デフォルトの名無しさん:2005/12/11(日) 16:14:12
>>614
具象オブジェクトの生成部分を切り出す単位って、そこしかないわけか
オイ?モットどこにでもあるでしょうがよ。
616デフォルトの名無しさん:2005/12/11(日) 16:20:57
???
617伝説新人タクシ:2005/12/11(日) 16:23:20
>>609
疎結合であるとかそれによって単体テストがしやすいとかいうこと?
618デフォルトの名無しさん:2005/12/11(日) 17:11:40
Springわかんなかったんなら、EJB3を待ってたほうがいいかもね。
619デフォルトの名無しさん:2005/12/11(日) 17:54:34
予習でやるならともかく、今の流れだと、これから本格的にSpring使うってのはなしなきがするな。
だから、逆に絶対やっといても損はない気がするけどさ。
620デフォルトの名無しさん:2005/12/12(月) 10:29:59
そんな難しいものじゃないし、画期的な機能に満ち溢れているわけでもないよ。
ただ単に便利なツールでいいのだと思うけど。
便利なBeanFactory、それで充分だよ。

おまけで付いてくる付属品はけっこういいよ。
AOPもそうだし、ORMやらmailやらが楽チンに扱えるのも嬉しい。

S2でもSpringでもどっちでもいいけど、これがない世界には戻りたくないね。

EJB3があれば不要という話もあるね、GabinKingが主張しているように。
でもSpringを通してEJB3を使った方がより簡単、そういう機能が出てくるって予想してる。
621デフォルトの名無しさん:2005/12/12(月) 10:36:16
というか、普通のTomcatで動かせて面倒なパッケージング不要なEJB3、みたいな感じになると思う。
622デフォルトの名無しさん:2005/12/12(月) 10:36:44
追伸:煽るワケじゃないが、Springごときを理解できない方が
EJB3を使いこなせるとは思えない。Annotationの裏で
起こっている出来事を多少は理解している必要はある、って
認識の元の考えだけど。
623デフォルトの名無しさん:2005/12/12(月) 10:58:46
Springってかなり裏方的な働きだから、単体ではよさがわかりにくいんだと思う。
EJB3でも、単にORマッピングだという認識で、なんだか裏側で勝手に結びつけてくれるという感じになるんじゃないかな。
624デフォルトの名無しさん:2005/12/12(月) 16:27:03
EJB3 って来ると思う?
Java ソースにアノテーション埋め込むのと
設定ファイルに外出しされてるのと
どっちが疎結合か考えたら
EJB3 は退化してるとしか思えない。
625デフォルトの名無しさん:2005/12/12(月) 18:56:40
アノテーションで疎結合じゃないという話は、すでに時代遅れだし、EJB3が来ないと思うなら、別の部分で批判しないといけない。
626デフォルトの名無しさん:2005/12/12(月) 19:05:38
簡単に理由をいえば
「疎結合のためにアノテーションを排除して、なんの意味がある?」
627デフォルトの名無しさん:2005/12/12(月) 20:42:36
プゲラ
おまいらどうせ来年にはAnnotationに文句垂れてると思うよ、飽きっぽいから。
628デフォルトの名無しさん:2005/12/12(月) 21:45:25
>>627
いや、それはそれで良いんじゃねぇの?
不満がなければ技術革新なんてねぇさ。
629デフォルトの名無しさん:2005/12/12(月) 21:58:43
Annotationの仕様には不満があるけど、Annotation自体はとても気に入ってるよ。
630デフォルトの名無しさん:2005/12/12(月) 22:25:06
Springで簡単なWebアプリを作るサンプルがあるサイトしらない?
WebApplicationContextを使って云々みたいな。。。
631デフォルトの名無しさん:2005/12/12(月) 22:28:53
Struts使った方が楽だからねぇ・・・
632デフォルトの名無しさん:2005/12/12(月) 22:53:59
AnnotationとEnumの組み合わせが好きだな
XDocletとは違って定数を指定できるし、引数の型チェックも出来る
633デフォルトの名無しさん:2005/12/13(火) 02:02:54
StrutsよりもJSFをもう少し簡単にした物を使いたい
634デフォルトの名無しさん:2005/12/13(火) 09:39:22
>>630
ほらよ

http://www-06.ibm.com/jp/software/websphere/developer/j2ee/lightweight/
http://www5f.biglobe.ne.jp/~webtest/myapptutorial/index.html
https://appfuse.dev.java.net/
https://equinox.dev.java.net/

勧められるのは、ビジネスロジックレイヤ内にサービスレイヤを
作ってるヤツ。(Facadeかけてるやつ)

とりあえずIBMのヤツを熟読しろ。
635教えてください:2005/12/13(火) 21:35:54
左クリックを使用できないようにjavaScriptを組んだつもりでしたが、機能しません。
どこが間違ってるのかご指南ください。

問題のHP http://urei.ojaru.jp/top.htm
フレームを使用してますが 
Images→***のリンク→左使用不可ページ となってます。

*** のページ 左使用不可ページ直リン防止script
左使用不可ページ 左使用不可script

このようにしたのですが・・・・・・・マイリマシタ
もうどうしていいのか分りません
636デフォルトの名無しさん:2005/12/13(火) 22:01:21
>>635 はスレ(板?)違いの上に、マルチ
637デフォルトの名無しさん:2005/12/14(水) 10:05:47
板違いというより、基地外
638デフォルトの名無しさん:2005/12/16(金) 02:08:32
Spring.NETの方はどうですか?
同じ?
639デフォルトの名無しさん:2005/12/16(金) 13:48:47
>>638
Spring.NETは基本的なDI・AOPの機能は既に実装済み。
DB、トランザクション、WEB等の機能はまだ開発中みたいだな。

だけど、正直.NETでDIは使う気にならないな。
640デフォルトの名無しさん:2005/12/17(土) 13:07:47
>>639
何故?
641デフォルトの名無しさん:2005/12/24(土) 12:10:09
ActionSupportを使ってStrutsとSpring連携させてるんだけど
このクラスのテストケースをstrutstestcaseを使って書こうとした時に
Actionから呼び出すBeanを変えてテストケース書きたい場合
Bean定義のXMLを変えるしか方法がない?

テストケース側からビジネスロジックの注入を書けると楽なんだけど、、、
642デフォルトの名無しさん:2005/12/25(日) 01:54:24
自分で注入しちゃったら?
643デフォルトの名無しさん:2005/12/26(月) 01:34:51
Struts + Sringでエ○画像掲示板つくってみました。
Spring入れたほうが動作は安定して早くなりました。
644デフォルトの名無しさん:2005/12/26(月) 11:56:02
>>642

その方法がわからないんだよう
ポインタなぞあったら教えてぎぶみー
645デフォルトの名無しさん:2005/12/28(水) 07:47:52
Spring2.0って機能面ではどう変わったんですか?
646デフォルトの名無しさん:2005/12/28(水) 07:55:33
>>644
セッターインジェクションの場合
setXxx(value);

フィールドインジェクションの場合
xxx = value;

で注入できますw
647デフォルトの名無しさん:2005/12/28(水) 14:12:36
>>645
設定ファイルがXML Schemaベースになってる。
648デフォルトの名無しさん:2005/12/29(木) 12:31:25
Important new features include:

* Simplified, extensible XML configuration
* Powerful new Spring AOP features and AspectJ 5 integration
* Asynchronous JMS facilities enabling message-driven POJOs
* Spring Portlet MVC, a MVC framework for JSR-168 Portlets
* ... and much, much more

これって設定ファイルが結構変わるのかな?
個人的には三番目がようやくと言った感じ。

JmsTemplate はいろいろ思うように行かなくて
(非同期受信なし、リソースを開放するタイミングが制御できないなど)
結局新たに作成したものを使った。
JndiTemplate があればどうにかなった。
649デフォルトの名無しさん:2006/01/08(日) 02:38:17
フレームワークの議論ばかりしていて実際にハイレベルな
パフォーマンス&拡張性が要求される現場では役に立たない
方々乙かれさまです。
650デフォルトの名無しさん:2006/01/08(日) 03:19:20
どこでも役に立たない>>649よりはマシだけどな。
651デフォルトの名無しさん:2006/01/08(日) 03:40:27
652デフォルトの名無しさん:2006/01/10(火) 15:18:00
普通なら釣りなんだろうが現場見てると
本気でそう考えてるオサーンがたくさん居て死にそうになる。

さすがに起動時だけは遅いが、一度起動してしまえば
速度が気になったことはないな。
拡張性については具体的な例を挙げて欲しいな。
どういう要求が出た時にどういう対応をしたのかを。
653デフォルトの名無しさん:2006/01/11(水) 03:07:47
HibernateDaoSupportを使う場合にQuery#setFirstResults(int)やsetMaxResults(int)を
使うにはどうすればいいかご存じの方はいませんか?
getHibernateTemplate().find* ではQueryオブジェクトを渡せないし。。。
getSession()して自分で処理するしかないかな。
Spring 1.2.6 です。
654デフォルトの名無しさん:2006/01/11(水) 11:24:00
>>653
HibernateCallback
655653:2006/01/11(水) 22:34:55
>>654
return getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) {
// クエリ投げて結果を返す
}
}
って感じですね。マニュアルにも載ってました。ポイントありがとう。
656デフォルトの名無しさん:2006/01/21(土) 20:54:23
ttp://pcweb.mycom.co.jp/news/2006/01/20/346.html
> Drools 2.5 BETA 2において提供されている拡張モジュールはdrools-decisiontables、
> drools-dotnet、drools-examples、drools-groovy、drools-ide、drools-io、drools-java、
> drools-jsr94、drools-python、drools-smf、drools-smftest、drools-spring、
> drools-spring-examples、drools-spring-jdk5。ベースとなる藻ジュースはdrools-base、
> drools-core、drools-core-3.0。

Springにも対応しているらしいルールエンジンだが、なんだかベースが不味そうだ。
657デフォルトの名無しさん:2006/01/21(土) 21:14:58
>>656
「藻ジュース」(・∀・)イイ
658デフォルトの名無しさん:2006/01/22(日) 10:27:33
いや飲みたくはない……
659デフォルトの名無しさん:2006/01/23(月) 21:26:19
今、新しいアプリ作るんで、まあ流行のSpringと扱い慣れているStrutsでと思っています。
まずはアーキテクチャを決めるために、いろいろサンプルを作ってみてるんですが、質問です。

Struts&Springの連携で、代表的なのは
 1) ActionSupport
 2) DelegatingActionProxy
 3) DelegatingRequestProcessor
の3つだと思うのですが、2) or 3) で決めかねています。

1)はせっかくなんでつまらないのでボツ。
残るはDelegatingActionProxyとDelegatingRequestProcessorですが、
機能的にどちらが良いのか分かりません。
どちらかと言えばActionを継承させてBaseActionを使っていたことが多いのですが、
RequestProcessorの方が上位ですよね。

アプリケーションは到って小規模なんでどちらでも同じだと思いもするのですが、
考慮すべき点や拡張性の点等、ご助言・苦言を頂けないでしょうか。

非常に基本的な質問で恐縮ですが、
660デフォルトの名無しさん:2006/01/23(月) 23:34:09
たいくつでつまらない技術が一番強い。
661659:2006/01/24(火) 11:18:42
>>660
確かに、ごもっともだと思います。
実はこれまでの開発ではSpringを使う機会もあったのですが、
見易さ、改修性の高さ、開発規模から
ServiceはInterfaceを使わずに実装しました。
(さすがにDAOはiBatis使って分けましたが)

それに比べ、今回は10年前にCで作った参照のみのアプリの更新で
時間的な余裕もあるので遊びたいと思ってます。

APIも読んでみたのですが、XDOCLETを使うか、また宣言で問題があったら、
といった使い分けの程度しか理解できませんでした。
みなさん、どのような使い方されているのでしょうか、教えて頂けるとありがたいっす。
662デフォルトの名無しさん:2006/01/24(火) 13:57:58
>659
(1) と (3) は Struts に変更があったら、思い切り引きずられそう。
TilesRequestProcessor が出ようが新規に Action が発明されようが
涼しい顔して DelegatingActionProxy でラップするのみの (2) が好きですね。
(ていうか (2) しか使ったことないですけど。)
その分設定ファイルは煩雑になるわけですが。

自分の分かりやすいと思える方法でやるのが一番かと。
小規模でそれほど寿命も長くないのであれば、(1) も手っ取り早くていいと思いますよ。

XDOCLET は思ったほど便利じゃないと言うか、
開発の間に試行錯誤してると、結局手で書いたほうが速かったでした。
↑これは設計がまずかっただけかも知れません。
663デフォルトの名無しさん:2006/01/24(火) 23:17:11
>>662
Actionベースはやはり分かり易いですよね。
人数が多いそれなりの規模なら、間違いなくActionProxyでいくと思います。

いくつかサンプル作ってみたのですが、3種類の感想は

ActionSupport
-確かに楽だけど、Springの楽しさは十分に味わえない気が。
 でも実装はまんまActionなんで、いたって簡単。
 しかもプログラマの質がそれなりなら、自分入れて3人位いれば
 中規模まで行ける気がする。

ActionProxy
-実質これがStruts&Springの標準でしょう。
 至って堅牢なシステムが訳分からん害虫と一緒でもテストファーストで
 スムーズに作れそう。
 しかもこれまでのStrutsの資産も十分に生かせるんじゃないでしょうか。

RequestProcessor
-Controler以前の処理をガチガチにやるのであれば、やはりRequestProcessorだと
 思います。
 が、幾分硬すぎる気が。大人数のRUPには向いているかな。

自分ごときが作るシステムはそれほどクリティカルじゃないし、ユルイと思うのですが、
まあ当たり前、と言った感想でしょうか。

今回はActionProxyからやってみようと思います。
時間もある分、新しい人も多いんで。
また進展したら報告します。 いらんか。
664デフォルトの名無しさん:2006/01/25(水) 12:22:51
>また進展したら報告します。 いらんか。
最近スレが過疎ってるからチラシの裏でも問題ないかと。

>訳分からん害虫
でかいところが素敵なフレームワーク作ってるかと言うと
そんな仕事にありつけたことが一度もないのは運が悪いんだろうか。
665659:2006/01/25(水) 22:18:20
>>664
なかなか難しく厳しい問題です、拡張性・メンテナンス性を含めた機能美で言えば。
確かに誰がやったん?ってひどいのもありますが、現状では仕方ないかとも思っています。

1つはレガシーのためです。
やはり遺物であっても今から見ればあほあほなRDB設計であっても
どうしても引きずらないではいられません。
例えばホストシステムの特定部分をWebに置き換える際、レガシーのデータやインターフェースは
その他のホストのためにつないでやらないといけません。
おかげでせっかくのDAOも、結局は???になってしまいがちです。
これまで私も挑んだのですが砕け散りました。

もう一つは、企業にとってみればシステムが構築されれば後は減価償却の対象でしかありません。
本来3ヶ月かけて作るべきものであっても即興で1.5ヶ月でつくれば評価されてしまいます、
掛けたくないのは人件費な訳ですから。
もちろんこんなシステムの維持のコストは高いです。が、トップの方々には見えてきません。
ユーザーからの機能追加要望があった、といえば、それなりのコストであれば通ってしまいます。
海外拠点との情報連携なんてつけてやれば大喜びです。
(フェーズ毎に見積もりきちんととって開発も難しいのが現状ですから・・・)

と、過疎板でうだつのあがらん社内SEが独り言ってみました。
666デフォルトの名無しさん:2006/01/25(水) 22:53:35
664ですがマ板向きな話題になりそうなのでこの件はクローズ。
脱線させてごめんなさい。
667デフォルトの名無しさん:2006/01/29(日) 00:03:48
すいません、Spring.NETの話題もここで良かったりします?
668デフォルトの名無しさん:2006/01/29(日) 09:45:51
わかんない。
けど、とりあえず書いてみれ
669デフォルトの名無しさん:2006/01/31(火) 10:23:30
>>659

>うだつのあがらん社内SE
お前様はオレですかw

疑問に思ったことを二つ。

>見易さ、改修性の高さ、開発規模から
>ServiceはInterfaceを使わずに実装しました。

何故だよ? facadeした方がP層から見たときに理解しやすいし、
実装ロジックを意識しないで済むと思うのだけど。あと例えば
君がAPI定義して、君の手下が実装する、なんて作業も
スムースになると思うのだけど。

あと、その場所にSpringのTransaction制御は適用してるの?
それとも君達でゴリゴリ書いているの?
そこがSpringの一番美味しい所だと思うのだが。

670デフォルトの名無しさん:2006/01/31(火) 10:24:23
<連投>

>流行のSpringと扱い慣れているStrutsでと思っています。

扱い慣れているとはいえ、何故に死滅が確定している
現verのStruts? 同じ社内SEの立場として言うが、
それって将来に禍根を残すんじゃないの?
特に、struts-taglibを使うのは忌むべきことじゃないのか?

高度にクリティカルじゃなくてもいいなら、素直にJSFを
採用すりゃいいじゃん。もし、strutsじゃなきゃ人材を
確保できねぇと言うなら、せめて
org.springframework.ui.velocityパッケージの研究を
してから決定した方がいいんじゃないの?

671デフォルトの名無しさん:2006/01/31(火) 12:13:28
死滅とかはNG Wordに入れてる人も居るから避けたほうが吉。

JSF はもう少し枯れてからの方が良くない?
今のところ、Velocity でやっちゃうのが一番直感的に思う。
672デフォルトの名無しさん:2006/01/31(火) 12:24:21
うちで使ってるアプリケーションサーバーはJSPしか動かねぇ
Servletすら使えない
673デフォルトの名無しさん:2006/01/31(火) 15:42:57
釣りには屈しない
674デフォルトの名無しさん:2006/02/01(水) 09:47:13
おぉ、まだ居る方が。

>>669
ServiceのInterfaceについては、いかに害虫がオブジェクト指向を知らなくても
オブジェクト指向らしいJavaになるか考えてこうなりました。
まずあの方達はクラスを上手く切り出せないんです、最初は。
で、下手にInterfaceやって使いまわしなんて考えると開発中の手入れが
恐ろしいことになり、ある意味好き勝手にやってもらいました。
で、DAOについてはメソッドが明確なんでInterface切ってやってもらってます。
iBatisを使ってるんですが、こいつだとDAOの中のみでTransaction制御できるんで
助かります。
これだと統合テスト中にこっちでクリティカルな部分がすぐいぢれるんで楽なんですよ。
675659:2006/02/01(水) 10:14:07
書き忘れですが、674 = 659です。

Strutsについては、JSFでの置換えも検討しましたが、
今回、自分以外はJavaでWebやるの初めてなんですよね。
やはりブラウザからRequestをServletで受けて、というのを実感
し易いのはStrutsかなぁ、と思います。
JSF、VBちっくにドラッグ&ドロップでできてしまうんで、最初からこれだと
裏の理解が薄く後々に生きない気がします。
それと社内SE的にはもう少し枯れてからで良いかなと、正直思います。

Taglibについては、個人的にこれ以上覚えられるかー、ということで
beanとlogicにのみ制限しています。
まあ多少beanを拡張はしていますが。。。

個人的には、Struts → JSFで行きたいなと、Viewについては。
676669:2006/02/01(水) 10:53:44
>>659

>DAOの中のみでTransaction制御

これって複雑なことをやろうとすると破綻しないかい?
複数のテーブルを更新するのもDaoのメソッド単位になる、
従って肥大したDaoImplを書かざるを得なくなる、という原因で。

オレのやり方だとこんな感じだ。

<ServiceLayer>
public void deposit(Account account, Money increasedMoney){
  accountDao.update(account);
  revenueDetailDao.insert(account, increasedMoney);
}

で、トランザクションはあくまでserviceLayerに置く。つまり上の
depositメソッドに対してPROPAGATION_REQUIREDを設定する。

オレはさらに、dao層、上の例ではaccountDao.updateと
revenueDetailDao.insertに対しては
PROPAGATION_MANDATORYをかけている。
これによりserviceLayerを通さずにDaoに触ったら即座にアポーン。

君の「DAOの中のみでTransaction制御」だと、上の二つの
メソッドを一つにまとめないと原始性を維持できないのでは?
勘違いだったらスマソ。
677659:2006/02/01(水) 12:13:46
>>669
DAO単位で考えれば原始性を維持できない可能性は仰る通り存在します。
でも、実際の使用で考えれば、多少複雑なデータはユーザに紐付いているわけで、
2重ログインを防げば、問題無しという訳です。
美しくないことは、確かですが。

Springでのトランザクション管理は、まだ読んだだけですけど、実装も含めスマートですね。
トランザクション属性なんか、いかにも楽できそうで。
DAOは何を使われてるんですか?
今回はHibernateが親和性も高く、情報も多いんで使おうかと思ってます。
678669:2006/02/01(水) 13:12:05
う〜ん、オレにはそれはチョト怖く感じる。

更新が途中で落ちる可能性なんてゴロゴロしてるワケだし。。。
(オレには納得いかんが)落ちる可能性を完全無視するとしても、
その場合は最低でもペシミスティックロックで組まんとイカンと
思うのだけど。。。

頼む、トランザクション管理層をserviceLayerに持ち上げとくれ。
Spring使えばチョチョイのチョイだ。

iBATISは好きだぉ。
679デフォルトの名無しさん:2006/02/01(水) 16:24:19
>>669
仰ってることが分かってきました。
自分が話しをごっちゃにした予感です、害虫さんと自分の立場を。

害虫さんのトランザクション管理は、はっきり言って、信用してません。
で、問題があった際にDAOとServiceを引っ張って考えるのはしんどいんで
DAOについてはiBatisのAutoCommitにして、自分はServiceに集中できるように
している、という話です。

読み返してみると、確かに訳分からん話してますね、自分。

そういえば、SpringとベストマッチなDAOって何でしょ?
iBatisもいけるようだとネットに載ってた気がしますが、やはりHibernateですかね?
他に面白いのないでしょうか。

680デフォルトの名無しさん:2006/02/01(水) 20:56:14
HibernateはDBを一から設計するっていうならおすすめ
既存のDBがからむならiBatisの方が無難だとおもう

害虫さんがいてiBatis学習コストが気になるっていうなら
Spring JDBCでもいいんじゃない?
681デフォルトの名無しさん:2006/02/02(木) 01:17:25
>>675
>Taglibについては、個人的にこれ以上覚えられるかー、ということで
>beanとlogicにのみ制限しています。

Strutsでやるんなら最低限必要なStrutsタグはhtmlタグのみで、後はJSTLで置き換えるのがお勧め
JSTLはJava EE5に含まれることが決定しているし、JSFも1.2からはJSTLと連携出来るようになる
682デフォルトの名無しさん:2006/02/02(木) 01:36:23
お勧めとかではなく、beanとかlogicを使うべきではない、という感じだな。
683659:2006/02/02(木) 10:15:36
>>680
既存DB、IMSもRDBもわんさかあるんで、これまではiBatisだったんですよね。
オブジェクトベースでのDB考えるなら、Hibernateというイメージは確かに強いですよね。
そんな幸せな開発はやったことありませんが。

>>681、682
z/OS中心の製造業社内SE的には、Webのプレゼンテーション層については過渡期に
感じるので、枯れ果てた技術で十分かなと思います。
新しい技術を入れても今後メンテする人が大変なだけですよ、うちのような環境では。

JDKにしても既存のものは1.4.Xが限度で、5にすることなんてありえません。
ぶっちゃけ、手間の割にメリットがあんまり考えられません。
それよりも新しいWASには5を導入する方向で考えると思います。

個人的にはJSFの熟成を期待しつつ、ちょっと複雑になりそうだったらリッチで、
と行ければ良いなぁ。

・・・今はこんなこと考えている自分が、ちょっと嫌。
Javaを始めて勉強してた頃はオブジェクト指向に感動し、新技術マンセーだったのに。
他に居ないのかな、こんな方。




684デフォルトの名無しさん:2006/02/02(木) 11:17:28
>682
beanを使うべきじゃないとは言っても、
messageはなかなか避けられないような。
685669:2006/02/02(木) 11:31:58
おいおい、そんな後ろ向きになるなよ。

新技術に対する感動を忘れたらオレらの仕事はつまらなく
なるばかりだぜ。つーか、今でもspring・iBATIS・hibernateって
やってるんだろーが。何でviewだけそんなに野望を失うのさ?

struts-taglibは、数年後には非推奨API(あるいはそれに準じた
無体な扱いを受ける立場)になるんだぜ? 君は後進に
非推奨APIのメンテをさせる気かい?

JSF怖くないってw つーかあれ便利だぞ。少なくてもstrutsに
比べりゃね。なんつったて同じ作者の二番煎じなんだから。
JSF自体がDI持ってるからSpringとの組み合わせもし易いしね。
練れてなくて意味無い所で苦労を強いられるのは認めるけど。

な〜んて書きながら、オレ自身もJSFマンセーには
なりきれないのだけどね。初期の頃に宣伝されたリッチ
クライアント対応とか全然進んでねぇし。(JDNCは実質
ポシャったみたいね) 早いとこJSPの呪縛から抜け出して
欲しいと思っているのに、なんか全然別の方向に逝こうと
しているみたいだし。。。

愚痴スマソ
686デフォルトの名無しさん:2006/02/02(木) 11:44:00
JSFも悪くないと思うけどね、まだ出来たてのせいか
ちょっとこなれてない感じ。 EL式とかアレだし。
sunのより高機能なんでmyfaces使っても、バグが結構あって
DataTableとか微妙な挙動をする場合がある。

1.2待ちかな
687デフォルトの名無しさん:2006/02/02(木) 13:02:24
>>684
messageは使うね。

>>686
2年もたってるのに、出来立てはないとおもう
688659:2006/02/03(金) 12:37:57
>>669
Viewも野望だけはあるんですけどね。
ただWebだと、JSFにしても色々あり過ぎて、決め手に欠けます。
それにお偉方の説得材料が足りません。
もう暫くおとなしく待って、淘汰されてから選んで良いかな。

Viewはお偉方にも分かってしまうんで、ここ以外は、好き勝手やれるんだけどねぇ。

689デフォルトの名無しさん:2006/02/03(金) 13:49:52
正直jsp2.0で十分な気が
690デフォルトの名無しさん:2006/02/15(水) 15:03:14
Hibernate3初心者ですが、ちょっと教えて下さい。
many-to-one のマップで、もし該当データが存在しなくても怒られない方法、
知りませんか?
例えば

<class name="item">
<id name="id"/>
<many-to-one name="bid"/>
</class>

<class name="bid">
<id name="id"/>
<pro name="amount"/>
</class>

これで
from Item item left join fetch item.bid をやって、
取得したリストを表示させると、bidを取得できなかったitemの
item.bid.amountをgetすると、
LazyInitializ E org.hibernate.LazyInitializationException TRAS0014I: 次の例外がログに記録されました。 org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
と、アボンです。

session閉じて分離オブジェクトになってんだから、良いじゃん、
と思うんだけど、教えて下され。
691デフォルトの名無しさん:2006/02/15(水) 15:11:12
692690:2006/02/15(水) 15:56:38
>691
スマソ
693デフォルトの名無しさん:2006/03/07(火) 11:35:44
保守、というか1.2.7記念。
694デフォルトの名無しさん:2006/03/07(火) 12:03:36
EJB3.0 のどこが DI なのかと思い始める今日この頃。
695デフォルトの名無しさん:2006/03/07(火) 12:49:55
つまり、勉強不足?
696デフォルトの名無しさん:2006/03/07(火) 23:10:38
@EJBアノテーションによるフィールドインジェクションだが?
697デフォルトの名無しさん:2006/03/07(火) 23:40:25
まぁ勉強不足なのは確かだが。

結局クライアントコードに依存性を書いてる辺りが、
確かに従来のJavaの文法じゃないけど
アノテーションと言う名前のただの lookup じゃん、とか。

(DIとは関係ないが)@Statefulも
アノテーションと言う名前の implicit な interface になっただけで
同じことをするのに書法のバリエーションが増えただけで
Perl のガラクタ折衷主義を思い出したり。
698デフォルトの名無しさん:2006/03/08(水) 22:01:48
"アノテーション使ってるからDIじゃない"っていいたいの?

interfaceがメソッドに付けれますか、と。
"ただのlookup"ではないしな。
結局アノテーションどうこうとゴネてるやつって、変化を受け入れれないだけなんだよな。
699デフォルトの名無しさん:2006/03/09(木) 01:38:51
クライアント側でリソース名を明示的に書いているから
DIとはいいがたいと思ってます。

>"ただのlookup"ではないしな。
どんな嬉しさがあるか、教えていただけないでしょうか。
煩雑な記述が減る程度しか思いつきません。

>interfaceがメソッドに付けれますか、と。
@Stateful はメソッドに付かないと思うけど。
700デフォルトの名無しさん:2006/03/09(木) 03:37:13
>>699
> クライアント側でリソース名を明示的に書いているからDIとはいいがたいと思ってます。

つまり、DIをわかってないと。
701デフォルトの名無しさん:2006/03/09(木) 13:01:15
そっか。DIの定義が変わったのか。
702デフォルトの名無しさん:2006/03/09(木) 22:20:05
>>701
変ってないだろ。
君が勘違いしてるだけ。
703デフォルトの名無しさん:2006/03/11(土) 15:16:19
2.0になってどう?
近い将来でseasar使うか2.0使うか迷ってるんだが、
Spring側の利点が見つからない・・・

両方つかってみたけど、seasarだとXMLをかなり省けるから
楽なんだが・・・

誰か意見ください。
704デフォルトの名無しさん:2006/03/13(月) 13:14:45
>702
DIって、クライアント側で明示的にリソース指定した部分が
コンテナが注入するようになって素敵だよって流れだと思ってたんですが。
で、勘違いのない本当の定義とは?

>703
利点が見つからないならSeaser2使えば良いかと。
とりあえずXMLが省けることは多分大した利点にならんよ。
705デフォルトの名無しさん:2006/03/13(月) 21:56:40
横槍スマソ

>>704
そもそもEJB3のDIは「明示的にリソース指定」はしないぞ

>とりあえずXMLが省けることは多分大した利点にならんよ。
その根拠は?
書かなくて済むのであれば書かないに越したことは無いし
XMLのメンテナンスだって馬鹿にならない
706デフォルトの名無しさん:2006/03/13(月) 23:15:36
>>704
DIの最低限の定義は、自分でインスタンスをとって来ないで、よそから注入してもらうこと。

@EJBアノテーションつけたとしても、それなりのコンテナ使わない限りなにも影響はない。
そのままSpringやSeasar使えばそれなりに注入される。
707デフォルトの名無しさん:2006/03/14(火) 10:32:53
DIに関して705氏と706氏の意見で納得。
確かに自分でインスタンスとってきてるわけではないね。
俺はとってくる情報が書かれてることそのものが嫌いなんですが
これはDIとは関係ないってことですね。

>その根拠は?
autowire 使えばそれなりに記述量は減るけれども
曖昧さが増えてかえって混乱を招くだけだった、との経験から。
Seasar2だと違うのかも知れない。
適当なこと言ってごめんなさい。

それにしても盛り上がらないスレですね。なんでだろ。
708デフォルトの名無しさん:2006/03/14(火) 18:46:23
一部雑誌や新しいもの好きが飛びついてるだけで
現場ではほとんど使われてないから。
709デフォルトの名無しさん:2006/03/14(火) 19:36:29
はい、飛びつきました
710デフォルトの名無しさん:2006/03/14(火) 22:14:33
うちでは全部SpringかSeasar使ってるが、世間ではそうなのか?
トランザクションに関してはとても楽だが
711デフォルトの名無しさん:2006/03/15(水) 17:34:47
>>707
いったん使い出せば、通常の範囲では質問もなにもないし、特に話題がないからかもね。
712デフォルトの名無しさん:2006/03/15(水) 17:52:50
イイナー
うちで使ってるスゲー高いアプリケーションサーバーは
jspしか使えない
713デフォルトの名無しさん:2006/03/15(水) 21:47:24
そりゃないんじゃね〜の?
714デフォルトの名無しさん:2006/03/15(水) 22:14:35
>>712
BroadVision One-To-One
以前はC++しか使えなかった。マジで。
715デフォルトの名無しさん:2006/03/15(水) 22:14:55
713宛てだった
716デフォルトの名無しさん:2006/03/15(水) 22:30:54
「Portal,Commerceの価格は1CPUで810万円からとなっております。」
ΣΣ(゚д゚lll)
717デフォルトの名無しさん:2006/03/16(木) 00:03:31
そういやあ、WebObjectsも昔は750万とかしたよなあ。。。。
718デフォルトの名無しさん:2006/03/16(木) 00:05:24
製品カタログ見ても何をするものなのかが分からん。
719デフォルトの名無しさん:2006/03/16(木) 02:13:23
JSPしか動かないTomcatみたいなの
ショボいDBのラッパーとかユーザー管理とかビジネスルールのライブラリとかがいっぱい付いてる
あと やたら高い
720デフォルトの名無しさん:2006/03/16(木) 03:57:55
うちの会社で出してるゴミコンポーネントも945万円するお。
1年で1個売れれば万々歳だって。
721デフォルトの名無しさん:2006/03/17(金) 16:09:08
そりゃむしろ、945万もするから売れるんだろう。
金を出す人間は、無料でしっかりしたモノを嫌がって
バカ高くてヘボいモノを好む傾向にあるから。

で、現場は地獄を見る、と。
722デフォルトの名無しさん:2006/03/17(金) 17:20:41
無料だとちょっと問題が出るとすぐ捨てるけど、
金かけてると捨てるわけにはいかないからなあ
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
724デフォルトの名無しさん:2006/03/25(土) 12:11:47
なあ、参照しかしないクエリーでもトランザクション切ってる
なんて事ないよな?
サービスのインスタンス化時にトランザクション切るのをデフォルト
にしてるのを見たことあるぞ。。。
同時アクセス数増えたとき、大変な事になるのがわからんのじゃろうか。
725デフォルトの名無しさん:2006/03/27(月) 10:58:31
AOPでトランザクション管理するなら、
READだけの処理では普通は開かんようにするはず。
726デフォルトの名無しさん:2006/03/27(月) 14:11:08
>AOPでトランザクション管理するなら
してなかったりして
727デフォルトの名無しさん:2006/03/27(月) 16:22:43
貼っとく

【BEA】Using the Java Persistence API with Spring 2.0
http://dev2dev.bea.com/pub/a/2006/03/jpa-spring-medrec.html
728デフォルトの名無しさん:2006/03/27(月) 19:02:56
>>724
どうして大変な事になるの?
729デフォルトの名無しさん:2006/03/28(火) 09:58:12
複数のテーブルを参照してひとつのデータを作るような場合は、
読み込みでもトランザクションきらないとまずいんじゃないの?
730デフォルトの名無しさん:2006/03/28(火) 10:11:35
>>729
> 複数のテーブルを参照してひとつのデータを作るような場合は、
JOINではなくて、複数のSELECT発行って事?
731デフォルトの名無しさん:2006/03/28(火) 11:05:09
>>730
ISOLATION_LEVELのデフォルトって普通はREAD_COMMITTEDじゃないの?
複数のSELECTまで考えるとISOLATION_LEVELをREPEATABLE_READに変更しないと駄目じゃない?
732デフォルトの名無しさん:2006/03/28(火) 11:33:17
>>731
InnoDBのデフォルトはREPEATABLE_READみたいだなあ
733730:2006/03/28(火) 11:45:37
>>731
>>732
DBベンダによってデフォルトが異なる。んで、大抵はREPEATABLE_READ(らしい)。

結論としては、複数のSELECTを発行するサービスのメソッドは
トランザクション制御しなきゃならんって事か。
734731:2006/03/28(火) 11:59:04
>>732
Oracleのデフォルトは文レベルの読み取り一貫性(READ_COMMITTED)だったような...

>>733
>結論としては、複数のSELECTを発行するサービスのメソッドは
>トランザクション制御しなきゃならんって事か。

加えて以下の様に明示的にISOLATIONレベルを指定しないといけないのかな?
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_REQUIRED, ISOLATION_REPEATABLE_READ, readOnly</prop>
</props>
</property>
735733(=730):2006/03/28(火) 12:24:32
>>734
いささか古いが、
http://www.tomlauren.com/weblog/archives/000019.html
によると、OracleのデフォルトはREAD_COMMITTEDみたいだ。
でも、REPEATABLE_READがNotSupportって事になると、
SERIALIZABLEしかないな。

最新の公式資料キボン。
736731:2006/03/28(火) 14:16:43
>>735
Oracleで以下の操作をやると
conn.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);

java.sql.SQLException:
READ_COMMITTEDおよびSERIALIZABLEのみが有効なトランザクション・レベルです。
...
ってエラーが出るよ。

Oracleだと更新処理を伴うトランザクションでトランザクションレベルの読み取り一貫性を
保証したいのであればSERIALIZABLEを指定するしかないのでは?
※更新処理を伴わないのであればreadOnlyだけで大丈夫みたい

でも実際にSERIALIZABLEがどうしても必要になる局面があんまり無いような気も...

で、元の話は

>>724
> なあ、参照しかしないクエリーでもトランザクション切ってる
> なんて事ないよな?

ってことだけどこれって

読み取り一貫性を保証しなくて良い参照のみのトランザクションでAOPで管理せず、AutoCommitも無効にしている場合、
明示的にトランザクションを開始する必要があるのか?

という意味なのかな?
737デフォルトの名無しさん:2006/03/28(火) 16:19:46
Strutsを使った場合の、AOPによる宣言的トランザクション管理について意見を聞かせてください。

(前提)
・サービスクラスの各メソッドはAOPによって宣言的トランザクション管理されている。
(処理)
・リクエスト->更新Action->表示Action->JSPとディスパッチする。
・更新Actionと表示ActionはサービスクラスのupdateHoge()やfindHoge()を呼び出す。

これだと、1回のリクエスト中に2つのActionが2回ビジネスロジックを実行するから、
トランザクションも2回発生してしまいますよね?(1操作=2トランザクション)

何となく腑に落ちませんが、これが当たり前なんでしょうか?

それとも、Facadeサービスから更新も検索もまとめて呼ぶべきでしょうか?
更新と検索の引数リストが全く異なる場合はFacadeしたくないんですが…
738デフォルトの名無しさん:2006/03/28(火) 20:03:23
好きにしろとしか……
個人的には、更新作業の頻度次第で決める
739デフォルトの名無しさん:2006/03/29(水) 11:26:28
本家よりコピペ

Spring 2.0 Release Party in Stuttgart (organized by JUGS)
Submitted by Juergen Hoeller on Fri, 2006-02-24 18:31. Event
Start: 2006-03-30 14:00
End: 2006-03-30 23:00
Timezone: -14400

いよいよ2.0が間もなく到来だぬ。

ところで2.0の目玉って何なのさ?(恥)
740デフォルトの名無しさん:2006/03/29(水) 16:35:27
>>738
んじゃ、Action2つにする。

とりあえず、HibernateでOpenSessionInViewしておけばAction2つでも
1トランザクションになるよね?
741デフォルトの名無しさん:2006/03/31(金) 23:11:17
>>740
トランザクションとHibernateのセッションの区別はついてますか?
742デフォルトの名無しさん:2006/03/32(土) 00:26:43
これ、掻い摘んでいうと何?
743デフォルトの名無しさん:2006/03/32(土) 01:38:39
軽量コンテナ
744デフォルトの名無しさん:2006/03/32(土) 05:59:35
>>742
「Java2EEなんかクソくらえ」
745デフォルトの名無しさん:2006/03/32(土) 06:03:37
今日は32日だ。うそをついていい日ではない。
746デフォルトの名無しさん:2006/03/32(土) 10:39:20
http://www.2ch.net/
*エイプリルフール中止のお知らせ*
本年度、ITバブル崩壊の余波、またライブドア事件の混迷、楽天ゴールデンイーグルスぶっちぎり最下位など、
悪条件の重なりによる株価低迷が2ちゃんねる運営費にも多大なる影響を与え、
火の車である今の財務状況を鑑みるに、エイプリルフールの全面中止もやむなしという判断にあいなりました。
ご期待されていた皆様には大変申し訳ありませんが、どうぞよろしくご理解いただければ幸いです。
また、妄言民族と呼ばれ、近隣アジア諸国に多大なる苦痛を与えている日本国民としてこれを良い機会と考え、
例えエイプリルフールだとしても嘘を無くし、世界平和に貢献できる公明正大な言論の場を標榜すべく襟を正しつつ、
2ちゃんねるはエイプリルフールの根絶に今後とも邁進していく所存でございます。
747724:2006/04/02(日) 12:30:05
>読み取り一貫性を保証しなくて良い参照のみのトランザクションでAOPで管理せず、
>AutoCommitも無効にしている場合、明示的にトランザクションを開始する必要があるのか?
そうじゃ。RDBにもよるが、読み取り一貫性を実現するために、大体がテンポラリ領域に
データをコピーしている(OracleとSQL Serverは少なくともそう)。
この事から、一覧など頻繁に閲覧されてデータ量が多い場合、直ぐエラーになっちまう。
(同時アクセスが多いと、Tempがクリアされる前に次が来ちゃうからじゃ)
このエラーを受けてDB屋にTemp領域増やせっていうのはナンセンス。
もちろん、ビジネスロジック上大きなTempが必要な場合もあるからそれは、
ちゃんと見積もりをDB屋に伝えればいい。大きくするのに否定的な訳じゃなく
PGの手抜きに対して文句を言ってるんじゃ。

また、上記の事だけじゃないが、上記だけからでも結構コスト(負荷)
が掛かることは言うまでもないよな。
748デフォルトの名無しさん:2006/04/02(日) 13:10:03
>>747
> そうじゃ。RDBにもよるが、読み取り一貫性を実現するために、大体がテンポラリ領域に
> データをコピーしている(OracleとSQL Serverは少なくともそう)。

オラクルは違うだろ。
データがコピーされるのは読み取り時じゃなくて更新時。
コピー先はテンポラリじゃなくてUNDO表領域。

> この事から、一覧など頻繁に閲覧されてデータ量が多い場合、直ぐエラーになっちまう。

頻繁に閲覧されてもそれだけじゃエラーにならない。
頻繁に更新されている時にのんびり読んでるとORA-01555
本当に理解して書いてるか?
749デフォルトの名無しさん:2006/04/02(日) 15:04:58
> > この事から、一覧など頻繁に閲覧されてデータ量が多い場合、直ぐエラーになっちまう。
>
> 頻繁に閲覧されてもそれだけじゃエラーにならない。
> 頻繁に更新されている時にのんびり読んでるとORA-01555
> 本当に理解して書いてるか?

激しく同意。
付け加えるなら、Oracleではトランザクションの有無にかかわらず
文レベルの一貫性は常に保証しようとするから、
> 頻繁に更新されている時にのんびり読んでるとORA-01555
という状況はトランザクションの有無にかかわらず起こりうる。

だから、>747の主張は少なくともOracleには当てはまらない。
750740:2006/04/02(日) 18:58:45
>>741
スマソ&サンクス
考えてみれば、サービス層でAOPトランザクション管理していると、
複数Actionが複数サービス呼び出す時点で複数トランザクションになる…
んでOpenSesseionInViewしてもHibernateのSessionが1つに保たれるだけですな。

結論すると、2Actionだと2トランザクションでいくしかないのか。
751731:2006/04/03(月) 14:34:04
あんまりSpringと関係が無くなって来たような気が...

>>747
>>748
>>749
読み取り一貫性に関しての詳細は置いておいて元の話だとOracleでは
以下になるんじゃないかな?

必要な読み取り一貫性が文をまたがるのであれば読み取り専用の
トランザクションを明示的に開始する必要がある。

必要な読み取り一貫性が文レベルでよいのであれば明示的にトランザクションを
開始しなくても良い(コネクションを生成した際のトランザクションがずっと使われている)
但し、更新処理の前にはCommitを発行して明示的にトランザクションを開始する必要がある

どちらにしてもOracleで更新やロックを伴わないトランザクションでCommitを行っても
無視される(v$sesstatのuser_commitは増えない)のでパフォーマンスには大した影響を与えない

結局のところ空コミット(参照のみトランザクションでのコミット)のコストの話なのかな?
752740:2006/04/07(金) 20:14:03
今さらだが、ようやくStruts+Spring+Hibernate
(DelegatingActionProxy、
StandardXAPoolDataSource、
JOTM、
OpenSessionInViewFilter、
JtaTransactionManager)
のアプリが作れたよ…

さて、次はSeasarも試してみるか…
753デフォルトの名無しさん:2006/04/07(金) 23:51:41
Hibernateって使える?
754デフォルトの名無しさん:2006/04/08(土) 06:37:50
Java標準になったくらい使える。
755デフォルトの名無しさん:2006/04/08(土) 13:40:24
DB設計がしっかりしているならHibernate
DB設計が腐っているならiBATIS
どっちも便利であるのは間違いない。
適材適所で。
756デフォルトの名無しさん:2006/04/27(木) 06:56:47
spring 使いたい。しかしEJBコンテナを捨てるには問題が。
リモート呼び出しやORM(hibernateで)は置き換えることが
できたけど、EJBのMessage Driven Beanを代替するものが
見つからない。MDB便利すぎる。
757デフォルトの名無しさん:2006/04/28(金) 01:17:20
Struts+Springで
SpringのViewクラスを使用したい場合は
どうすれば良い?
758デフォルトの名無しさん:2006/04/28(金) 21:03:44
それってStruts使う意味あんの?
759デフォルトの名無しさん:2006/04/29(土) 20:34:44
>>757
既存システムとしてStrutsの部品があって
ExcelとかPDFを出力したいので
SpringのViewを使用する
760デフォルトの名無しさん:2006/04/29(土) 20:36:33
つ POI
761デフォルトの名無しさん:2006/05/08(月) 16:21:07
Struts(SpringのStrutsインテグレーション機能)とSpringMVCって同時に動作できないの?
web.xmlとXXX-servlet.xmlを調整すれば、実現できそうだけど?
762デフォルトの名無しさん:2006/05/09(火) 09:52:00
1.2.8記念

って何なのこれ?
763デフォルトの名無しさん:2006/05/10(水) 18:31:22
1.2.8 についてか、Spring についてか。>何なの
764デフォルトの名無しさん:2006/05/11(木) 00:10:50
クラス属性に対応するbean定義の<property name>の値って、何でもいいんだな。
setterの名前さえ整合性が取れていれば。
765デフォルトの名無しさん:2006/05/19(金) 09:53:31
貼っとく

Rodが語った2.0@JavaOne

https://www28.cplan.com/cb_export/PS_TS-3744_277744_124-1_FIN_v2.pdf

user:contentbuilder
pass:doc789
766デフォルトの名無しさん:2006/05/19(金) 14:31:03
>765
thx.

Message-Driven POJO なんて構想もあったのか。初めて知った。

Extensible XML Confinguration は
俺様設定が乱立しそうでちと怖いな。
767デフォルトの名無しさん:2006/05/19(金) 14:32:45
>>761
そりゃできるだろ。
768デフォルトの名無しさん:2006/05/19(金) 16:50:26
では757は解決だな
769デフォルトの名無しさん:2006/05/20(土) 00:21:20
ソースコード上でAppicationContextを利用してBeanを取得するしかない
場合、どうしてます?
いい方法を考えているうちにgetBean("BeanId")のコードがいっぱいできた
まんまプロジェクト終盤にきてしまった。。。
770デフォルトの名無しさん:2006/05/20(土) 00:56:56
そんなに気にしなくていいと思うけど、
getBeanId()のメソッドを用意して静的にアクセスできるようにはしてる。
771デフォルトの名無しさん:2006/05/20(土) 00:59:34
もちろんID取得もSpringで管理するんだよな?
772デフォルトの名無しさん:2006/05/20(土) 01:01:22
そもそも、自分でgetBeanしなくていいように作ります。
StrutsならDelegatingActionProxy使えばいいし
TapestryもSpringと連携させてコンポーネントにInjectしてもらえるし。
773デフォルトの名無しさん:2006/05/20(土) 06:12:45
それができない場合はルックアップするしかない。
どこからでもルックアップできてしまうので収集がつかなくなるおそれはあるけど、
>>770 のように bean の種類ごとにルックアップするメソッドを用意しておけば
いく分見通しもよくなると思われ。
774デフォルトの名無しさん:2006/05/20(土) 08:56:55
それただのサービスロケータになってる
別にいいけど
775デフォルトの名無しさん:2006/05/20(土) 12:58:25
サービスロケータだと何がダメなの?
776デフォルトの名無しさん:2006/05/20(土) 13:05:37
DI自体がサービスロケータ
777デフォルトの名無しさん:2006/05/20(土) 15:56:24
>>775
サービスロケータに依存してしまうからですよ。
778デフォルトの名無しさん:2006/05/20(土) 15:59:55
ただ、サービスロケータはコンパイルエラーでミスを検地できるので
単純にどっちが上とかはいえない

ってDIってネーミングつけた人いってなかったっけ?
779775:2006/05/20(土) 16:13:32
>>777
なるほどー。ありがとうございます。
となるとそれくらいの依存は気にならないなー。
元レスは注入できない場合の話だし
780769:2006/05/20(土) 16:55:15
かといって他の解決方法もないのですよね。たぶん。
ドメインモデルとは相性が悪いのでしょうか。やはり。
いまさら設計をトランザクションスクリプトにできないし。。。
まっ宣言的トランザクションだけでもかなり有効であることには
変わりないわけだし。
781デフォルトの名無しさん:2006/05/20(土) 22:52:38
>ソースコード上でAppicationContextを利用してBeanを取得するしかない
場合

ってどういう場合なんだろう?
素朴な疑問。
782デフォルトの名無しさん:2006/05/21(日) 03:47:30
私が使っているフレームワークにはイベントリスナを登録しておくと
コールバックしてくれるという機能があるけど
イベントリスナには依存性注入のチャンスがないのでApplicationContextを使う。
783デフォルトの名無しさん:2006/05/21(日) 07:33:25
>>782
ここで解説されているみたいなことをやるべし
http://www-128.ibm.com/developerworks/edu/j-dw-java-springswing-i.html
784782:2006/05/22(月) 00:01:56
>>783
自分でインスタンスを生成する必要がある場合の話です。

785769:2006/05/22(月) 15:49:50
getBeanを利用する主な場面とは。。。
たとえば親子関係をなすドメイン(請求書と請求明細)などは
ロジック上で画面の内容をドメインに変換する必要があるのですが
明細クラスのような1クラスで複数インスタンス必要になる場合は
betBeanで必要数分インスタンスを生成する必要がある。
みたいな場面です。
786デフォルトの名無しさん:2006/05/22(月) 16:54:00
>>785
内部でインスタンスを生成する必要があるロジックの場合は、
そのインスタンスを生成するFactoryクラスをインジェクトする
ってのをよくやる。
787デフォルトの名無しさん:2006/05/23(火) 22:20:49
てかドメインモデルとはめちゃ相性悪い。
アナパタ時代の設計にDI使おうとすると死ねる
788デフォルトの名無しさん:2006/05/24(水) 11:41:00
よくわからんが、
higaタソが提唱しているシンドメインモデルならドメインロジックだけDIにして、ドメインモデル(データ)
だけ通常の手段(new)で生成すればよいのでは?
ttp://d.hatena.ne.jp/higayasuo/searchdiary?of=5&word=%2a%5bgoya%5d
789デフォルトの名無しさん:2006/05/24(水) 13:07:20
▽どっちが速いSeasar2 VS Spring
http://cm.thinkit.co.jp/?4_23934_12965_1
790デフォルトの名無しさん:2006/05/24(水) 14:00:57
>>788
オレもそうしてる。ドメインのPOJOは自分でnewする方がOOしてる気分になるね。
DIに生成させるのはServiceLayer〜DataStoreLayerのドメイン『操作』クラス達だぬ。

>>789
キャハキャハ。なんかヒガタソ最近人格が変わった? JavaOneでイジメでもくらったのかな。

PowerdBySpringのフレームワークがこんなにポコポコ誕生している現状を見れば、
1.2.xとスピード競争やった所で焼け石に水ダヌ。
AspectJが推奨スタイルになる2.0のこと知らぬ訳ではないだろうにね。

別にRodファンではないけどさ。
791デフォルトの名無しさん:2006/05/24(水) 15:39:44
785が考えるケースで getBean() することはない。
データは普通に new したらいい。
なんで getBean() しようとしたのか教えてくれ。
メリットが何一つ思い浮かばない。
792788:2006/05/24(水) 17:02:50
>データは普通に new したらいい。
激しく同意。

ビジネスロジック周りでDIしたいと思うなら、
ドメインビジネスとしてクラスを切り分ければいいのでは?と思った次第。
793769:2006/05/24(水) 22:06:40
>シンドメインモデル

>ドメインビジネスとしてクラスを切り分ければ。。。

ということは、私の思うトランザクションスクリプト + DAOという
組み合わせがDIでは有効という考えと同意と考えられます。
そちらのほうが合っているという結論ですよね。結局は。
DIを利用する上では状態をもつドメインはミスマッチであるということですね。
794769:2006/05/24(水) 22:24:03
>なんで getBean() しようとしたのか教えてくれ。
>メリットが何一つ思い浮かばない。

785であげた例も悪かったですが。。。
1.getBeanするドメインが他のドメインを持っている。
オブジェクトグラフの一気取りが可能(Factory作ればすむという話もあるが)
2.やはりInterfaceを実装する実クラスをコードに書かなくてよい
この2つはかなりのメリットです。

もちろん前提がドメインロジックとデータの分離であれば、データに対して
getBeanするメリットが何もないというのは理解できますが。

DIを利用する上では状態をもつドメインはミスマッチである
けれども
上記の理由があるためドメインモデルでもDIを採用しました。
けれども
getBeanする部分をもっといいやり方はないですかねーという質問でした。
795デフォルトの名無しさん:2006/05/25(木) 01:09:09
Hibernate等のORマッパでドメインモデルを取得すれば、
one-to-manyなんかの関係は勝手に構築してくれる。
1の芋づる式にとりたいというだけでgetBeanするのはDIの役割とは違う希ガス。
(もしかして、DAOが生成するデータが≠ドメインモデルな設計?)

>2.やはりInterfaceを実装する実クラスをコードに書かなくてよい
はちょっと意味が理解できん。スマソ。解説キボン。

>DIを利用する上では状態をもつドメインはミスマッチである

>上記の理由があるためドメインモデルでもDIを採用しました。
は納得できないなぁ。
そう考えた理由は?

あと、ビジネスロジックを切り出しただけでトランザクションスクリプトって呼ぶの?
SQLで記述するのか、呼び出し側の言語で記述するのか、が
ドメインモデルとトランザクションスクリプトの最大の相違だと思ってた。
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?DomainLogicAndSQL
796デフォルトの名無しさん:2006/05/25(木) 01:14:00
うーん、ドメインモデルとかDIとかいろいろいじった結果一時DIに傾倒したが....

結局ところ、ドメインモデルのサポートとしてDIを使うくらいにしておきたいと
思った。
もしどうしてもどっちかを取らなくちゃいけなくなったら、サービス層を内製しても
ステートフルなドメインモデルを選択したい。Hibernateとか使うと、リッチなJava
オブジェクトをそのままDBにマッピングできたりするし。

それに、そっちのほうがオブジェクト指向っぽい感じがするから。
797デフォルトの名無しさん:2006/05/25(木) 15:57:44
精読したが
> 上記の理由があるためドメインモデルでもDIを採用しました。
の結論に至った理由が理解できなかった。

実際何を getBean() したのかが分からない。
getBean(リテラル文字) まくりな状況より
new した方が可読性高いし変なキャストもせずに済む。
設定ファイルで singleton="false" を書き忘れる心配もない。
どうしても生成部分を隠したいなら、
簡単な Factory を作って、そいつを DI でセットしたらいい。
798デフォルトの名無しさん:2006/06/29(木) 07:36:24
RC2あげ
799デフォルトの名無しさん:2006/07/04(火) 09:35:38
過疎スレ保全

つか、2.0期待sage
800デフォルトの名無しさん:2006/07/04(火) 20:58:53
時給1000円でJava教えてくださるかたを募集します
場所 所沢(池袋・高田馬場から直通)
よろしくおねがいします
i−want−to−study−java@hotmail.co.jp
(アドレスは全角で書いてあるので半角に直してください)
801デフォルトの名無しさん:2006/07/05(水) 03:49:26
コンビニのバイトより安いですが、よろしくお願いします。
802デフォルトの名無しさん:2006/07/05(水) 16:53:11
おひおひ、1,000\/h っていくら何でも安すぎだよ。
それじゃ労働しようとする意欲湧かねぇな。

君が♀なら別。
803デフォルトの名無しさん:2006/07/05(水) 17:12:10
javaを教えると一言に言っても色々あるしな
804デフォルトの名無しさん:2006/07/05(水) 19:13:48
Springと関係ないな
805デフォルトの名無しさん:2006/07/05(水) 19:33:12
>>804
つーかスレタイにJavaが含まれているスレに無差別絨毯爆撃しているだけだから無視するのがよろしいかと
806デフォルトの名無しさん:2006/07/05(水) 22:35:28
しかし以外にたくさんあるんだな。
>つーかスレタイにJavaが含まれているスレ
ブックマークしていながら、今回のマルチが出るまで気づかなかった。
807デフォルトの名無しさん:2006/07/07(金) 15:39:40
Spring WS のドキュメントが結構揃ってきたすね。
前は XML-Object Mapping の章しかなかったのに。
そろそろまじめに調べ始めるかな。
808800:2006/07/17(月) 21:33:22
教える対象は超初心者です。

専門学校などでJavaを勉強されていて夏休みだけ教えたいという方も歓迎です
809デフォルトの名無しさん:2006/07/18(火) 12:06:26
javaの前に常識って物を勉強したほうが良いと思います^^;
810800:2006/07/18(火) 12:49:11
常識も教えていただければと思います。
811デフォルトの名無しさん:2006/07/18(火) 14:19:48
ここで聞いても学べません
812デフォルトの名無しさん:2006/07/20(木) 22:25:56
もはや完全にSeasarに押されてるな。
813デフォルトの名無しさん:2006/07/21(金) 00:57:25
>>812
獄長乙
814デフォルトの名無しさん:2006/07/21(金) 23:57:04
WebMVCのSimpleFormControllerで、
フォームのパラメータ名とCommandのフィールド名を
任意にマッピング(バインド)する方法がわからない…
815デフォルトの名無しさん:2006/07/24(月) 17:54:58
spring:bind使ってないの?
816デフォルトの名無しさん:2006/07/26(水) 12:31:58
Java World 2006/09 特集

2.0 とか関係なしに
・EJB3.0 に懐疑的
・ORM は最終的に JDBC に回帰する
な姿勢が良かった。

あと Acegi の記事が後で役に立ちそう。
817デフォルトの名無しさん:2006/08/01(火) 13:18:00
漏れJavaWorld斜め読みした所。詳しくはこれから読む。

豆蔵が書いたのねコレ。漏れは以前、長谷川ダンナの話を
聞いたことがあるのだが、

「Hibernateは確かに優れたプロダクトだが万能じゃない。
 陥りやすい穴もあるから慎重に検討してから導入した方がいい。」

って言ってた。禿同だったんだけどね。今回の記事もその思想が
根底に流れているみたいだね。

JPAマンセーな流れの中でこういう視点は貴重だと思う。
818デフォルトの名無しさん:2006/08/09(水) 01:22:18
Servlet依存のコード(JSFバッキングBeanも含む)とサービスメソッド
のデータ受け渡しってPOJOでもDTO使った方がいいのかな?
直にビジネスオブジェクト受け取った方がコーディングが楽なんだが・・・
819デフォルトの名無しさん:2006/08/10(木) 09:35:55
>>818

http://www.atmarkit.co.jp/fjava/kaisetsu/j2eewatch02/j2eewatch02.html
から抜粋

このように、POJOをそのままEntity Beanとして扱うことができれば、従来のEJB開発で
Web層とのデータ交換に利用されてきたDTO(Data Transfer Object)パターンはもはや
不要となる(実のところ、J2EEパターンの多くはEJBの使いにくさを緩和するために
生み出されたアンチパターンであるという見方もある)。
820デフォルトの名無しさん:2006/08/15(火) 22:23:19
うーん、結局、「Web層」って、BCE でいうと、どこになるんだろか。
「Web層」がBだけの役割であれば、M に B を依存させないために、
DTO(のようなもの)は必要のような気がする。

表示で使うPOJOを直接永続化するということは、
逆に永続化の都合に(N:N関係は扱えないとか)、
表示部のロジックが依存してしまう、ということになるんじゃないの?
821デフォルトの名無しさん:2006/08/16(水) 10:13:12
この本の書評たのむ。

http://www.amazon.co.jp/gp/product/4797334223/

特にオレが知りたいのは、

・2.0を紹介してるか。

・JPAを使ったWebApp例で、マンセー記事ばかりではなく
 注意点やアンチパターン的な解説もしているのか。

・SpringWebServiceの解説あるのか。

・SpringRichClientとかAcegi(SpringSecurity)の解説あるのか。

でも、読んだ印象でも何でもいいから知りたい。
822デフォルトの名無しさん:2006/08/17(木) 11:01:55
>820
> 表示で使うPOJOを直接永続化するということは、
> 逆に永続化の都合に(N:N関係は扱えないとか)、
> 表示部のロジックが依存してしまう、ということになるんじゃないの?
シンプルなアプリなら問題ないと思うんだが。
ただ、発想としては「永続化するPOJOを直接表示する」が正しいかと。

どうしても気になるなら、
サービス層で永続化用DTOからプレゼン用DTOへ変換してやれば良いと思う。(higaタソのシンドメインモデルってやつね)
問題は、プレゼン用DTO・変換ロジックを実装するコストに対して価値があるかどうか。では?
823822:2006/08/17(木) 17:21:40
間違い。
× シンドメインモデルってやつね
○ Dxoってやつね

あと
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?LocalDTO
824デフォルトの名無しさん:2006/08/22(火) 09:50:14
貼っとく

【IBM】Introduction to Spring 2 and JPA
https://www6.software.ibm.com/developerworks/education/j-spring2/
825デフォルトの名無しさん:2006/08/25(金) 23:20:47
tp://www.sssg.org/jp-springframework/?FAQ
Seasarの連中もキモイけどこれもイタイ。
826デフォルトの名無しさん:2006/08/25(金) 23:23:36
>>824
ログインパスワード教えて
827デフォルトの名無しさん:2006/08/26(土) 09:06:37
>>825
ゆるされるはんいじゃない?
828デフォルトの名無しさん:2006/08/26(土) 10:29:20
回答がおもろい。
829デフォルトの名無しさん:2006/08/26(土) 23:38:21
仲間由紀恵でなく蛯原友里にすべき
830デフォルトの名無しさん:2006/08/27(日) 23:31:05
>>829
仲間由紀恵は沖縄出身
831824:2006/08/28(月) 09:30:04
>>826

ごめんごめん、先に米IBMの会員登録してくれ。
無料&誰でもOKね。

https://www.ibm.com/account/profile/us?page=reg
832デフォルトの名無しさん:2006/08/28(月) 12:16:59
抜粋くらいないとわざわざ会員登録してまで見ようとは思わない。
833デフォルトの名無しさん:2006/08/28(月) 12:43:34
ここでそんな文句言われても…
834824:2006/08/28(月) 18:21:41
序文

Java server applications need not be difficult and tedious to create.
Now in its second generation, the lightweight Spring framework adds a large suite of features
that make it simple for even new server application developers to use.
One key enhancement is Spring 2's integration with the Java Persistence API (JPA),
a cornerstone of the Enterprise JavaBeans (EJB) 3.0 specification. In this tutorial,
learn how to create server applications from scratch using the Spring 2 framework.
835824:2006/08/28(月) 18:26:13
その次

Before you start

For almost a decade, the "proper" way to build a robust and
maintainable server-side Java application has been the exclusive domain
of the Java 2 Enterprise Edition (J2EE) platform.

J2EE applications are built using Enterprise JavaBeans (EJB) technology
and run on servers that facilitate deployment and provide rich container services
(such as the management of database connections and pooling).

These servers also add value by providing deploy-time declarative control of
important features such as security and transactions. Although versatile,
the J2EE development process involves many tedious and repetitive tasks
and the creation and maintenance of large numbers of source code files.

Many lightweight Java frameworks claim to simplify server application development,
but none matches the Spring framework in maturity and popularity (see Resources).
Now in version 2, Spring was designed from day one to simplify the server application
building process.

836デフォルトの名無しさん:2006/08/28(月) 18:26:48
その次

Instead of approaching development from an all-in-one container perspective,
Spring aims to provide just enough support for an application's requirements
without the burden of a full-fledged container environment. Spring eliminates code bloat:
you can code and test business objects completely outside of any container,
letting your business-object code remain simple, testable, maintainable, and reusable.

With the arrival of Java EE 5 and EJB 3.0, the J2EE community is poised to meet
the Spring developer community. EJB 3.0 supports the notion of lightweight POJOs
(Plain Old Java Objects) as EJB components and introduces the Java Persistence API (JPA),
a persistence mechanism that can run externally to the container.

This persistence mechanism automates the movement of information between business objects
and external relational databases.

Version 2 of the Spring framework has continued its evolution and also leverages JPA
as a persistence mechanism.

In this tutorial, you will work with Spring 2 and JPA persistence.
You'll create a server application using the Spring 2 framework, complete with access
to a DB2 Express-C database. The Eclipse IDE facilitates the development of the Java application
and enhances your exploration of the Spring 2 framework.

これ以上は面倒見ない。
837デフォルトの名無しさん:2006/08/29(火) 10:38:46
いつの間にやら SpringLDAP っちゅーSubProjectができてるね。

これってAcegiと被ってないんだろうか・・・?
どうやって棲み分けしようとしているのか、理解している人いたら教えて。
838デフォルトの名無しさん:2006/08/29(火) 17:36:04
acegi とはレイヤーが違う。
LDAP ってセキュリティとはあまり関係ないのでは。
一種のDBを操作するプロトコル(書きより読みに重点)
程度のもんだと思う。
839デフォルトの名無しさん:2006/08/30(水) 08:04:35
>>821
Acegi使ったサンプルは載ってた。
840デフォルトの名無しさん:2006/08/31(木) 10:13:57
Eclipse RCPとSpringによる実用的なシッククライアントの構築
ttp://codezine.jp/a/article.aspx?aid=528
841デフォルトの名無しさん:2006/08/31(木) 11:59:47
>>799
> 過疎スレ保全
> つか、2.0期待sage


Web2.0に期待揚げ
842デフォルトの名無しさん:2006/08/31(木) 15:09:25
マーケティング用語なんてどうでもいい
843デフォルトの名無しさん:2006/08/31(木) 15:12:01
「Web2.0」を使いたがるのは40代以上
844デフォルトの名無しさん:2006/08/31(木) 17:58:42

>>838

説明thx、acegi に AuthXxxLdapImpl みたいなのがあるので
混乱していたのですが、確かに違うレイヤの話ですね。

(基本的に「業務アプリ屋」なもので、LDAPの本質とか
頭脳から抜け落ちていました)

>>839

情報アリガト、今度その辺を試そうと思っているので購入
してみることにします。

>>840

お、これイイ。今度の仕事、このパターンになりそうなんです。
(EclipseRCPじゃなくてSwingになりそうだけど)
丁度都合よく記事が出てラッキー!!
845デフォルトの名無しさん:2006/09/06(水) 23:21:30
>>844
Swingを選ぶあたり、保守性を考慮してあっていいね
SE5.0から速度が向上してるよ
846デフォルトの名無しさん:2006/09/07(木) 01:34:24
データベースのフロントエンドで、Eclipse RCP使ってもメリットないし。
847デフォルトの名無しさん:2006/09/07(木) 15:27:08
ここでCGLIB聞いちゃいますが、

最も単純な、あるクラスの全メソッド呼び出しをインターセプトする場合、
Enhancer使って、MethodInterceptorをCallbackさせます。
この時CGLIBは一体どうやって実現してるか分かる方いますか?
CGLIBは、対象のクラスは弄らず、サブクラス化してるらしいが、
そのサブクラスにはどういう仕掛けをしてメソッドインターセプトする
でしょうか。

848デフォルトの名無しさん:2006/09/10(日) 21:58:06
849デフォルトの名無しさん:2006/09/11(月) 01:01:18
OpenSessionInViewInterceptorを定義して、それをSpringMVCで使うときは
bean定義でSimpleUrlHandlerMappingのinterceptorsにていぎするのまではいいのですが。
トランザクションのコミットとロールバック条件などはどのように設定するものなんでしょうか。
850デフォルトの名無しさん:2006/09/12(火) 01:32:58
Seasar2使え
851デフォルトの名無しさん:2006/09/20(水) 09:59:17
>>849
ぐぐれ
852デフォルトの名無しさん:2006/09/29(金) 00:22:03
カウントダウンキタ━━━━(゚∀゚)━━━━!!!!

ってEclipseのパクリかよw
853デフォルトの名無しさん:2006/09/29(金) 21:48:32
この道はいつか来た道
854デフォルトの名無しさん:2006/09/29(金) 22:11:27
ああ そうだよ
855デフォルトの名無しさん:2006/09/30(土) 21:57:09
その下の The Spring Rich Client Project ってのも木になる。
856デフォルトの名無しさん:2006/10/02(月) 18:46:19
質問です。

以下の場合、スレッドセーフになりますか??

・SpringとStrutsの連携で「DelegatingActionProxy」を使用
・Service層のオブジェクトをSetterインジェクションしてインスタンス変数に保持
 ※Service層のオブジェクトはスレッドセーフを意識していない


StrutsはスレッドセーフにするにはActionでインスタンス変数を使用しないとなると
↑の場合、スレッドセーフにならないような気がします。


もし、スレッドセーフにならないとして、synchronizedする以外でいい方法が
あれば教えてください。

やっぱ、ActionSupport使うしかないんですかね??
857デフォルトの名無しさん:2006/10/02(月) 20:18:36
>スレッドセーフになりますか?
ここで言う setter injection てのは
定義ファイルに書いといてコンテナにDIしてもらう事?

Action も Service も singleton="false" にすれば
スレッドセーフを考えなくてもOK。(コストは最悪。)

>ActionSupport使うしかないんですかね?
ActionSupport も Action に違いないので
インスタンス変数持たせたら大変。

インスタンス変数を ThreadLoacal で保持させる方法も考えられるけど、
サーブレットコンテナが Action のインスタンスを使い回したりするから、
execute 抜ける前に、確実に変数クリアする等の注意が必要。

結局、いろいろやるより、Service 層をスレッドセーフにした方が楽。
858デフォルトの名無しさん:2006/10/03(火) 10:02:49
>>857
コンテナに DI してもらうという意味です。
言葉足らずでした...

確かに ActionSupport も Action を extends してるから
DelegatingActionProxy だろうが一緒ですね

Service 層をスレッドセーフな構造になるように考えてみます。
859デフォルトの名無しさん:2006/10/04(水) 00:10:57
Spring 2.0 リリース記念age
860デフォルトの名無しさん:2006/10/05(木) 09:43:31
豆の人たちあたりが早く解説記事書いてくれんかな。




読んでたら宜しく>豆
861デフォルトの名無しさん:2006/10/27(金) 01:13:54
Spring-Annotation v1.0 キタ━━━━(゚∀゚)━━━━!!

やってみたー。動かなかったー。


orz
862デフォルトの名無しさん:2006/10/31(火) 20:38:16
↓の記事だけどさ、動かなかったんだよね。
ttp://journal.mycom.co.jp/articles/2006/10/26/annotation/

そんでさ、インスタンスをサ、createBeanで作ってやったワケよ。
とりあえずサ、動くこと確認してから記事にしろと言いたいわけ。
ソースまで追っかけさせんナ。ヽ(`Д´)ノウワァン

TOAnnotationXmlApplicationContext ctx =
   new TOAnnotationXmlApplicationContext("classpath*:applicationContext.xml");

ConfigurableListableBeanFactory factory = ctx.getBeanFactory();

//createBeanの第2引数の0とか1とか2とかね、第3引数のtrue, falseとかね。ヘ(゚∀゚ヘ)アヒャ
TargetBean bean = (TargetBean)factory.createBean(TargetBean.class, 1, true);
bean.xxx();

プログラムは漏れの本業じゃないのに…。
烏賊にも動きました的な記事は要らんよ。検証してから書けや!

spring-annotation 試したヤシ、居る?
863デフォルトの名無しさん:2006/11/01(水) 10:38:09
試すならライターの記事よりもリファレンス見たり
テストケース触った方が良いかも知れんですよ。

annotation なんて無視するのが一番だと個人的には感じる。
864デフォルトの名無しさん:2006/11/01(水) 12:20:21
間違ってるのに記事を起こすのはどうかと思うのです。

しかもSpring-annotation同梱のサンプル・ソースも同じコードだし、ドキュメントないし。

結局ソース追っかけてくしかないね。

865デフォルトの名無しさん:2006/11/01(水) 12:36:59
Springにアノテーション使うと、エラく簡単になるよ。
866デフォルトの名無しさん:2006/11/02(木) 01:59:49
>>865
どのへんが?
867デフォルトの名無しさん:2006/11/02(木) 11:11:00
>>865
アノテーションでInjectionとか出来るなら使えるけど、そうじゃなきゃ意味ないぽ。
868デフォルトの名無しさん:2006/11/02(木) 11:21:38
アノテーションでDIならEJB3でおk
869デフォルトの名無しさん:2006/11/02(木) 22:28:27
>>862
普通に動いたけど。
それだとアノテーション書いてる意味なくね?
870デフォルトの名無しさん:2006/11/02(木) 22:34:44
>>866 >>867
アノテーションの定義のやりかたによってはXML不要になる。
オレオレアノテーションの定義もそれほど難しくないし。
871デフォルトの名無しさん:2006/11/02(木) 23:17:18
>>862
あと、createBeanの第2引数はファクトリの定数でいいかと。
872デフォルトの名無しさん:2006/11/03(金) 00:02:37
>>869
え゛?

new TOAnnotationXmlApplicationContext("classpath*:applicationContext.xml").getBean("bean");
だと、
NoSuchBeanDefinitionExceptionが返ってきて"No bean named 'bean' is defined"って言われる。

factory.createBean(); で動きました?

>ファクトリの定数
ソース見たら、BY_NAMEは1だって書いてあったので。
ConfigurableListableBeanFactory.AUTOWIRE_BY_NAME
でいいわけですね。
873デフォルトの名無しさん:2006/11/07(火) 14:49:21
spring hibernate strutsでアプリを組んでorg.hibernate.StaleObjectStateExceptionを発生したときのハンドリングって、global-exceptionで行うのが正しいのだろうか・・?
874デフォルトの名無しさん:2006/11/25(土) 18:53:10
んでこのフレームワーク結構導入実績でてきた?
MSの.netもおんなじようなSpring出しているけど
最近なんかMSさん追随してません。
875デフォルトの名無しさん:2006/11/25(土) 19:55:24
.Netな世界ではみんなCOM+サービスに満足してるんじゃね?
876デフォルトの名無しさん:2006/11/26(日) 02:57:30
.NET版SpringのSpring.NETって導入されてるんだろうか
877デフォルトの名無しさん:2006/11/26(日) 18:43:09
Spring Web Flowってどうなの?
ドキュメンツ読んでもいまいちよくわからんし、管理するxmlが増えそうだし。
878デフォルトの名無しさん:2006/12/03(日) 19:40:12
>>876
Spring.NET 1.0.2ならC/SのWindowsFormsな案件で使ってる。
SpringにはFormとDataAccessを管理させてる。
あと、AOPでDataAccessモジュールのSQLクエリキャッシュとトランザクション制御をやってる。
879デフォルトの名無しさん:2006/12/06(水) 16:53:07
なんで2chではspringとSeasarとでスレの勢いがぜんぜん違うの?
仕事(主に顧客の業務イントラ)でDIコンテナ使うとき、springを使うときのほうが圧倒的なのだが。
seasarを使っているというのをほとんど聞いたことがない。

ソフトウェアとしてどちらが優れているということについては
ここでは置いときますが、個人的にはSeasarには興味があるけど、
もっとspringのスレも盛り上がっていいと思うのだが・・・
880デフォルトの名無しさん:2006/12/06(水) 16:58:10
国産だし、どうしても目がいっちまう。

実際問題、Springで十分実用に耐えるんだけどな。
日本以外も含めれば、実績も多いみたいだし。
881879:2006/12/06(水) 17:04:00
>>880
2ヶ月前アメリカに行ってとあるカンファレンスに出席してきたけど、
やはりみんなspring使ってた。
SSH(Struts, Spring, Hibernate)を肌で感じた。

>国産だし、どうしても目がいっちまう。

おれの周りだけかもしれないけど、
みんなspringという名前は知っているけど、Seasarという名前は
知らない人が多い。
882デフォルトの名無しさん:2006/12/06(水) 17:44:11
>>879
教祖ネタというか、燃料が供給されるかの違いだと思うけど。
883デフォルトの名無しさん:2006/12/06(水) 18:39:26
まぁどっちもがんばってくれと言うことで。

でも2ヶ月前でまだStrutsってどうなんだろうな。
俺はもうリッチクライアント以外をお勧めする気にはならんですよ。
自分で作っててもムカつくし。
WebでやりたいならRailsにしましょうとか、そんな感じ。
884デフォルトの名無しさん:2006/12/06(水) 19:50:33
RIAの人気って業界ではどうなの?
Flash+JSFとかあっても良さそうなんだけど。
Flex2とかOpenLaszloとかもうちでは聞かないし。
885デフォルトの名無しさん:2006/12/06(水) 23:56:01
>879
ここはSpringのプロダクトをヲチするスレ
あっちはSeasarな人たちをヲチするスレ
886デフォルトの名無しさん:2006/12/06(水) 23:56:45
今後はAjax + Railsというパターンが増えてくる気がする
887デフォルトの名無しさん:2006/12/06(水) 23:59:44
RoRとJavaは市場がかち合うことは無いんだが・・・
888デフォルトの名無しさん:2006/12/07(木) 00:05:30
Ajax+Railsは、まだまだマニアのおもちゃだしな。
889デフォルトの名無しさん:2006/12/07(木) 15:18:11
おもちゃってことはないと思う。
あれはあれで立派なプロダクト。
なんだけどRailsって言うだけあって
規約にガチガチなのが俺には合わなかったです。

これはもう好みの問題だけど、
強い型付けでガチガチに守られつつも
コンポーネント間をゆるゆるにつなげるDIが
俺的には良い落とし所。
890デフォルトの名無しさん:2006/12/07(木) 19:23:27
Rails の考えかたって、「規約にガチガチ」なのかなぁ。
自分は、「いちいち書かなくてもだいたい分かるだろ」
だと思うんだけど。
891デフォルトの名無しさん:2006/12/07(木) 21:58:41
Rubyの決まりごとは「脳にフィットする」だそうだから
合わない奴に合わせる気はないから使わなくていいよって規約だろうな
892デフォルトの名無しさん:2006/12/23(土) 13:59:43
Spring2.0入門
http://www.amazon.co.jp/exec/obidos/ASIN/4774130001/

早速2.0対応本が出ますね。
豆蔵か。
893デフォルトの名無しさん:2006/12/23(土) 14:17:54
豆蔵って住商情報システムと提携してから
何か成果出したっけ?
894デフォルトの名無しさん:2006/12/24(日) 01:20:09
>>892
thx。

早速Amazonにて予約完了。
正月あたりに読みふけりますわ・わ・わ。
895デフォルトの名無しさん:2006/12/25(月) 09:10:09
豆蔵の本は、前バージョンのやつもSSH入門に丁度良かったから、>>892も期待できそう。
896860:2006/12/27(水) 15:11:38
>>895
同意。オレも前著でSpringを学んだ。
長谷川ダンナの書くことって実世界から乖離してないから好感持てる。
本人と話したこともあるけど、いい人っぽい。
897デフォルトの名無しさん:2006/12/27(水) 15:23:07
>>896
あれ読んでからSeasarの青本読んだら、構成がほとんど同じで萎えた。
+αの何かも無くて、劣化コピー読んでる気分だった。
Seasarを一通り試したかったから最後まで読んだけど。
898デフォルトの名無しさん:2006/12/27(水) 15:41:38
もともと同じテーマのフレームワークだから
内容が似通のも仕方ないと思うが。
立ち読みで気がつこうぜ。
899デフォルトの名無しさん:2006/12/27(水) 15:46:06
ほんと、その通りだよ。おかげでKOnozamAです。
900デフォルトの名無しさん:2006/12/28(木) 01:25:43
SpringとSturtsを組み合わせる際なんですが、Actionのインスタンス変数にインジェクションさせるクラスって
ステートレスになるようにしないと駄目だったりしますか?

2.0から追加されたAutowiringRequestProcessorを使ってインジェクションするBeanのscopeをprototypeにした場合なんですが、
インスタンス変数に設定されたBeanは毎回newされますが、Action自体は同じオブジェクトが使用されています。
この場合のActionってスレッドセーフじゃなくなりますよね?

DelegatingRequestProcessorを使ってscopeをprototypeとかrequestにすればいいのかも知れないけど、
その方法だとActionのインスタンスが一つになっている意味が無くなる(=パフォーマンス劣化)ような気がするし、
皆さんはどうやって解決してますか?
901デフォルトの名無しさん:2006/12/28(木) 09:35:03
ActionにDIするのはサービスのインスタンスだと思うけど、
俺の場合はサービスクラスは大抵ステートレスにしてる。
ここまではそれほど悩むことじゃないと思う。



その先のドメイン(ビジネス)クラスはステートフルにしたいが、
DIするとなると相性悪いから、俺的にはベストな方法が見つかってない。

過去レスで、ドメインクラスはファクトリで生成するようにして、
ファクトリをサービスやドメインにDIするって言う方法を提案してる香具師がいたと思う。
あるいは、higaタンの提案するシンドメインモデル(=データと処理のカプセル化を放棄する)か…
とにかく、ステートフルな従来型ドメインモデルとDIコンテナは相性が悪すぎる。
902デフォルトの名無しさん:2006/12/28(木) 19:43:58
>DelegatingRequestProcessorを使ってscopeをprototypeとかrequestにすればいいのかも知れないけど、
>その方法だとActionのインスタンスが一つになっている意味が無くなる(=パフォーマンス劣化)ような気がするし、
>皆さんはどうやって解決してますか?
自分は Seasar (S2Struts)を使ってるんだけど、
それと(おそらく)同等のこと(component の instace 属性 を request にする)をやって、
Jmeter でレスポンス時間を調べたけど、あんまり変わらなかったよ。

903デフォルトの名無しさん:2006/12/28(木) 21:13:33
904デフォルトの名無しさん:2006/12/30(土) 17:33:21
>>892
あの、当時まだU30だった俺より2,3歳くらい年上の兄ちゃんたちが
書いてる本か。1.0の本まだ読んでないのに2.0が出ているとは。

1.0の本、2,3ページ読んだだけでほったらかしてほうほうDIってこういうものなのかー
程度に済ませていたらもう2.0ときたか。

うーむ、すでに1.0本があるだけに、買うべきか迷う。
905デフォルトの名無しさん:2006/12/30(土) 18:39:06
>>904
改訂版てより増補版だから両方あっても無駄にはならない。
むしろ初心者がいきなり2.0から読むのは辛いんじゃねーかて感じ。
906デフォルトの名無しさん:2006/12/30(土) 19:53:18
>>905はそのU30だった著者集団か?
JavaOneTokyoに顔出した
907デフォルトの名無しさん:2006/12/30(土) 19:58:47
>>904
Springを実務で使ってる人達なら
本家のリファレンスを印刷したものを
手元に置いとけばそれで良い気がする。
908デフォルトの名無しさん:2006/12/31(日) 03:40:45
>>905
springに初めて手を出そうと思っているのですが、
2.0の本だけ買えばいいのか、それとも1.0から読んだほうがいいのでしょうか?
909デフォルトの名無しさん:2006/12/31(日) 03:52:43
>>908
間違いなく1.0から
910デフォルトの名無しさん:2006/12/31(日) 04:02:13
>>909
どうもありがとう、やってみます
911デフォルトの名無しさん:2006/12/31(日) 23:16:06
さて2.0の本が届いたので読みふけりますか。
912デフォルトの名無しさん:2007/01/03(水) 01:14:33
>>903
情報ありがとうございます。
上のサイトと、書籍『Spring2.0入門』の方にも解説があったので読んでみました。

<aop:scoped-proxy/>を指定すると、リクエストのあったユーザ用のsession(またはrequest)スコープのBeanを自動で設定してくれる、って事ですよね。
これって上に書いたようなマルチスレッドの問題は解消されるんでしょうか?

Springが自動的に設定してくれるとはいえ、singletonスコープのクラスのインスタンス変数にインジェクションしたらマルチスレッドで
駄目なような気がするんですが・・・。

この辺り、上手く行く仕組みがイマイチ良く分かりません・・・。
913デフォルトの名無しさん:2007/01/05(金) 16:41:23
おいらも斜め読みの最中だから確証ないけど、SpringWebFlowと組み合わせてFlowScopeとかじゃ出来ませんかね?

まだよく分かってませんが。
914デフォルトの名無しさん:2007/01/12(金) 18:44:40
2.0.2age
915デフォルトの名無しさん:2007/01/13(土) 21:37:01
Click Frameworkの使い勝手はどうです?
916デフォルトの名無しさん:2007/01/15(月) 13:30:44
まあまあかな。
917デフォルトの名無しさん:2007/01/18(木) 18:25:33
ネタもないことだし話題を振ってみる。

プログラム作ってる時に Spring に依存する部分でどうやって処理してます?
(DAO やロジックの実装で、spring.jar が必要になっちまいそうな部分)
コンテナ変える事ってほぼないとは思うんですが。
918デフォルトの名無しさん:2007/01/18(木) 18:41:01
>どうやって処理してます?
今ひとつ何を言いたいのかわからへん。
お客さんと打ち合わせした経験があまりない人?

919デフォルトの名無しさん:2007/01/18(木) 22:54:42
>>917
「Spring使えば、O/Rマッピングやトランザクション、ロギングで特定のライブラリに依存しなくなりますよ」
って言っても、確かに依存部分はコードからxmlに逃がすことはできるけど、
Springに依存してる箇所は相変わらず残るって事か。
commons loggingに依存しまくりなjakartaプロダクトと通じる物があるな。
920デフォルトの名無しさん:2007/01/18(木) 23:03:07
割り切りが吉
921デフォルトの名無しさん:2007/01/18(木) 23:12:52
spring最高!
とおもってたけど、NetBeans+glassfishでEJB3やってみるとそうでもないなぁとおもた
とはいえEJB2までとは別物にした功績はでかい
922デフォルトの名無しさん:2007/01/18(木) 23:36:55
>>917
Mock
923デフォルトの名無しさん:2007/01/19(金) 02:50:57
Spring便利そうだからデスクトップアプリにも使ってみよう!
ってちょっと思ったけど、考えてみたらWebアプリ(っつーかサーバ)
じゃないと使いにくいよね。xml添付しまくるデスクトップアプリって
なんかかっこ悪いし。
924デフォルトの名無しさん:2007/01/19(金) 07:34:32
>>923
なぜそう思うのか?
XMLドキュメントなんて、JARの中に入れておけばいいじゃない。
925デフォルトの名無しさん:2007/01/19(金) 07:36:17
>xml添付しまくるデスクトップアプリって
>なんかかっこ悪いし。
いみふ
926デフォルトの名無しさん:2007/01/19(金) 07:47:47
XML使ったら負けかなと思っている
927デフォルトの名無しさん:2007/01/19(金) 07:51:04
>XML使ったら負けかなと思っている
さらにいみふ
928デフォルトの名無しさん:2007/01/19(金) 07:52:34
アホとしか言いようがない
929デフォルトの名無しさん:2007/01/19(金) 07:57:32
アホとは言わないが論理的でないよね。
Spring良さそうな噂を聞いて使ってみようかと思ったけど、
それにはそれなりの学習コストが必要であるのがわかって、
そこまではしたくない言い訳にいみふなことを連発しているだけだと推測する。
930デフォルトの名無しさん:2007/01/19(金) 07:59:38
混同してない?
SpringとEJBは別腹よ?w
931デフォルトの名無しさん:2007/01/19(金) 10:56:19
>>918
確かに意味不明な文になってた。すまん。

JdbcTemplate や JmsTemplate、DisposableBean
とかを使う場合、Spring に依存した実装になるんだけど
POJOでウハウハな思想だと、なるべく依存部分は減らしたい。
で、そういう場合に

1. 依存しててもいいじゃない。
2. Springから独立した部分と依存部分にわけて、
 独立部分がアダプター経由して依存部分を使用する。
3. XML定義で済むなら無理して使わない。(init-method 書けば済む InitializedBean など)

のどの方針で行ってますか?と。ケースによる使い分けとか、
もっとスマートな方法でやってるとか。
そんなことを聞きたかった。
932デフォルトの名無しさん:2007/01/19(金) 12:07:11
>931
外部リソースを使用する限り、必ずどこかでそれらに依存して実装しなければならない部分はある。
だから依存してる部分としてない部分をハッキリさせておくことが重要なんじゃないかな?



IFきってあるDAOだけならいくらでも依存させておけ
933デフォルトの名無しさん:2007/01/19(金) 12:31:48
まぁクライアントサイドだと自前でパラメータを動的にコンストラクタで生成すること多いってのはある
934デフォルトの名無しさん:2007/01/19(金) 14:16:22
935デフォルトの名無しさん:2007/01/19(金) 16:50:29
>>932-934
ご意見どうもでした。
と言うか、盛り上がりようもないくらいに
当たり前の結論に至ってしまった・・・
936デフォルトの名無しさん:2007/01/19(金) 17:39:57
springを使ってシステム開発しようかと思っているのですが、
皆さんはデータベースアクセスにどんなツールを使ってますか?
Hibernateが多いのでしょうか?
937デフォルトの名無しさん:2007/01/19(金) 19:58:46
今はJPAだろ?
実装は好きなの使ってもいいが、それぞれ癖をつかんどけ
938デフォルトの名無しさん:2007/01/19(金) 21:56:28
なんで今はJPA?
939デフォルトの名無しさん:2007/01/19(金) 22:37:08
目立てるから
940デフォルトの名無しさん:2007/01/19(金) 23:34:01
デスマーチが好きだから
941デフォルトの名無しさん:2007/01/20(土) 01:19:33
あーでもクライアントアプリで設定ファイルでもないのに
xml使ってるってのはスマートじゃないって気はするね。
感覚的に、だけど。
942デフォルトの名無しさん:2007/01/20(土) 03:36:26
その感覚がわからない
943デフォルトの名無しさん:2007/01/20(土) 06:45:06
>>938
わざわざHibernateをHibernateとして使うメリットはないと思う。
944デフォルトの名無しさん:2007/01/20(土) 09:05:47
>>943
CriteriaとかLock付きのloadとかって結構いいなと思うんだけど
みんなそーでもないのかな。
945デフォルトの名無しさん:2007/01/20(土) 09:34:12
基本はJPAの範囲でやっておいて、CriteriaとかHibernate独自の機能欲しいときだけEntityManagerからHibernateSessionとってくるほうがよさげ。
946デフォルトの名無しさん:2007/01/20(土) 09:36:45
特に、エンティティの定義は、Hibernate Annotations使うよりはJPAの定義にしておいたほうがいい気がする。
947デフォルトの名無しさん:2007/01/20(土) 11:45:33
>>943
逆にHibernateなのにわざわざJPAを使うメリットは?
標準だから?w
948デフォルトの名無しさん:2007/01/20(土) 15:31:39
ツールと資料と技術者かな。

いままでHibernate使っててノウハウあるなら、勝手にやって。
949デフォルトの名無しさん:2007/01/20(土) 15:32:01
FreeMarkerがVelocityに勝ちきれないのと同じように
既に手をつけたものが用途に納まりきるなら、他のを使うことは馬鹿げている
JDBCひとつでやってきた奴がこれから始めるならJPA
色んなORMを使い続けている奴がいたらそいつもJPA
残りは今までどおりでいい
950デフォルトの名無しさん:2007/01/20(土) 16:36:20
FreeMarker が Velocity に勝ちきれないのは別の理由だろう。
951デフォルトの名無しさん:2007/01/20(土) 17:24:54
>>948
資料と技術者で現時点で優位に立っているとは思えない。
これからだね。
952デフォルトの名無しさん:2007/01/21(日) 11:30:36
NetBeans5.5は標準でJPA対応していてすげーな
JPA対応していれば自由に実装をかえることができるのもよろしい

Hibernate固有の命令はつかわずにHEMだけできるだけ使うのが正解かと
サーブレットだってコンテナ依存コードは出来るだけ書かないのと同じ
953デフォルトの名無しさん:2007/01/21(日) 15:47:16
さすがに、JPAのAPIだけでまかなうのは厳しい
954デフォルトの名無しさん:2007/01/21(日) 18:13:23
>>953
ナニが足りない?
955デフォルトの名無しさん:2007/01/21(日) 18:25:43
簡単なところだと、エンティティ定義の@NotNullとか。
956デフォルトの名無しさん:2007/01/21(日) 19:56:48
>>955
Hibernate Validatorのことか…
ちとレイヤが違うって気がするな。
マッピングだけなら@Column(nullable=false)
957デフォルトの名無しさん:2007/01/21(日) 22:39:37
JPAだとfindと同時にLockって出来なかったと思うんだけど、
それってみんな不便と思わないのかな。
(PUBLIC DRAFTの頃だけかもだけど)

コレ出来ないと
find(SELECT)→lock(PKだけでSELECT FOR UPDATE)→refresh(SELECT)
ってな感じでやらないと真っ当にロックした値にならないように思える。
楽観的ロックは例外飛んじゃうからそれはそれで嫌だし。
958デフォルトの名無しさん:2007/01/21(日) 22:50:02
O/R Mapping の比較はそれ用のスレでやったらどうか。
959デフォルトの名無しさん:2007/01/22(月) 11:05:27
いいんじゃない?
Springネタの投稿ないんだから。
960某スレ167:2007/01/22(月) 12:50:02
んではSpringネタを投下。Spring Remotingって使ったことあるヒトいます?
Eclipse RPCと組み合わせてる記事見つけてハァハァしてまつ(苦笑)
http://www.devx.com/Java/Article/31763/0/page/1

これは(上手く動けば)かなり使い物になるのではないでしょうか?
今までS2Daoが使いたいがためにSeasarを学習していたのですが、今までの学習コスト全てを投げ捨ててSpringするかもしれません(-_-;
961デフォルトの名無しさん:2007/01/22(月) 13:29:17
Spring Remotingは詳細がわからんから運用としてはなんともいえないが
JAX-WS/EJB3ともろにかぶる仕様だな

あとサポートとか考えるとSWT単体はあってもRCPとの組み合わせはまずない
業務系ならSwingのほうが便利だしな
962デフォルトの名無しさん:2007/01/22(月) 13:35:37
Spring Remotingは使ったことないでつが、
>今までS2Daoが使いたいがためにSeasarを学習していたのですが、
>今までの学習コスト全てを投げ捨ててSpringするかもしれません
には共感しまつた
963デフォルトの名無しさん:2007/01/22(月) 14:39:21
S2DAOはJPAでいいかなぁという気がする。
でもSpringRemotingも通信部分と割り切るのもいい。
汎用性ならJAX-WSかな。

でも純正のJavaEE実装もかなりよくなったし、ベストの可能性もある。
EJB3はDI化され、永続化はJPA、XMLまったくかかなくてリモートアクセスまでできるのもいいんだよなぁ。
HTTPがフロントエンドにこなくてもいいのならそのままEJBを使えばいいし、前面にだすならJAX-WS。

ところでspring2.0はフィールドインジェクションできるようになってる?
セッターとかコンストラクタとかは非常に使い勝手が悪いので邪魔。本当はXMLも自動生成されるといいんだけどね。
964デフォルトの名無しさん:2007/01/22(月) 15:11:39
>S2DAOはJPAでいいかなぁという気がする。
おでも最近そう思い始めてる。
S2DaoいいんだけどSeasar前提だとちとつらいケースあるし。
JPA基本で対応できない部分はJPA実装固有の機能で逃げるという気持ちになりつつある。
965某スレ167:2007/01/22(月) 16:45:58
お返事どもっす。


>>961
所謂「リッチクライアント」としてはそうかも。
Eclipse RPCはクライアント側のアプリケーションを構築するフレームワークという意味合いが強いと思う。
クライアント側でどれだけ複雑な処理をやるか、ということで

Eclipse RPC
 ↓
SWT
 ↓
Ajax(GWTはどーなんだろ?)
 ↓
すっぴんのWebアプリ

なんて階層になるのでは、などと思ってまつ。
JavaにこだわらなければFlexあたりも中に割り込んでくるのでしょうがね。
JAX-WSは名前も知りませんでした。ありがとうございます。早速調べてみます。


>>962-964
ORMスレでも書いたのですが、結局1:Nマッピングや複雑なビューの生成は自分で書くしかない、って思ってしまうんですよ。
とりあえずはDbUtilsやSpringJDBCを手早く身に付けておいて、続きはJPAというふうにしたほうがいいかな?、と思っています。
そーするとSeasar2を学習する意味が無くなるのですが……それでもSeasar2の自動コンポーネント登録/自動アスペクト登録にはまだ魅力を感じています。ありゃ便利です。
人はこうやってSeasarの重力に魂を引かれていくのですね(笑)
966デフォルトの名無しさん:2007/01/22(月) 17:10:50
>>964
実際のところJPAでもネイティブなSQL発行できるのでそんなに問題はないと思う
どのみちファサードパターンでユーザー側はDBの存在を意識させないようにしてるし、JDBC直でもなんでもいいし

>>965
RPCだと覚えるのが多いわりに、情報がないので問題がでたとき対処ができない
業務で使わないのならいいかもしれないけどね
同じフレームワーク使うならSwingベースのNetBeansプラットフォームのほうがまだ楽

どちらもでかすぎて最適解ではないとおもうけど
クライアントサイドはフレームワークで縛れるようなコードなんてほとんどないよ

JAX-WSはJAX-RPCの後継でWEBサービスのJavaEE5の一部
アノテーションを使うことにより手軽にサーバーが用意できる
それがなんとJavaSE6に搭載されたおかげで標準APIだけでクライアントのコードを書くことが出来るために
一気にクライアントサーバーのAPIとして注目の的となる

最後の段落の最初のほうは意味がちとわからん
後半はEJBもXML書く必要は一切なしだし、セッターとかも用意する必要ないし、Seasar2使うときもS2Tiger使っておくのが吉かも
967デフォルトの名無しさん:2007/01/22(月) 17:27:00
重箱の隅だけど、RPCじゃなくてRCP(Rich Client Platform)ね。
Eclipseファンデーションから、RMI絡みの新しいフレームワークが出たのかと思ったじゃないか。
968デフォルトの名無しさん:2007/01/22(月) 19:21:54
>>962
Spring Remotingは同じく知らないが、
S2RMIと比べてどの辺が使いやすいのか教えてくれ。
http://s2rmi.seasar.org/ja/index.html
969962:2007/01/22(月) 19:47:10
>>968
Spring Remoting使ったことないおでに何故S2RMIとSpring Remotingの比較をせよと?
S2RMIも使ったことないのにw
970デフォルトの名無しさん:2007/01/22(月) 19:48:18
>>966
> それがなんとJavaSE6に搭載されたおかげで標準APIだけでクライアントのコードを書くことが出来るために
> 一気にクライアントサーバーのAPIとして注目の的となる

それだけじゃ無理だお
JDKに最初から入ってるのにCORBA流行ってないお
971デフォルトの名無しさん:2007/01/22(月) 19:56:39
コブラきたーーー(ちがっ)
972デフォルトの名無しさん:2007/01/22(月) 20:04:45
JavaSE6なんて当分遊び人しか使わないしな
973デフォルトの名無しさん:2007/01/22(月) 20:15:56
そういいながらJ2SE5.0についていけない人を何人も見ました・・・。
JavaEE5にもついていけない人は多いのだろうか。

JAX-WSはWSDLからのクライアント生成を徹底しているからクライアントにわたるクラスがなにか意識しないでもいいのがすごいな。
SpringRemotingはクライアントとのやりとりはインターフェースでやるのかな。

SpringRemotingと比較すべきなのはどちらかといえばHTTPを使うS2Axisのほうだとおもう。
ただ、S2Axisって名前がよくないなー。Axisなんてのに依存するのはよくねーよ。
974デフォルトの名無しさん:2007/01/22(月) 20:35:13
つまんねえマッピング(JPA)のミスで3時間無駄にした・・・orz
975某スレ167:2007/01/22(月) 21:09:29
お返事どもっす

>>966
多少前後しますが……えと、ORMスレ読んでました?(^^;
私あちらで「どーせ1:N関係には多かれ少なかれビジネスロジック絡んでくるんだから、
1テーブル/1レコードをそのまま扱うDAO/DTO作って、1:Nの関係扱う(ある程度ビジネスロジックを内包した)ファサードで纏めちゃえばいいぢゃん」とか書いてたんです(苦笑)
単に設計がまずいだけかもしれませんけどね(^^; 自作DAOしこしこ作ってた駄目エンジニアの戯言です。

で、前段。確かに、奥のほうの情報はあまりないんですよね>Eclipse RCP
とりあえず使えるようにする情報くらいまではそこそこ出てきているんですが、何か起こったときにコワいぢゃん、というのは、確かにあると思う。

EJBか……2で挫折したんですよねー、三年ほど前に(^^;
S2Tigerは(もしこのままSeasarするなら)もちろん使うつもりです


>>967
フォローどもっす。素で間違えてました(苦笑


>>968-973
CORBAは全盛期の遥かな昔にチロっと甞めました(苦笑
つーか、そのものずばりのS2Remotingってのが先月出てた……(^^;
http://s2remoting.seasar.org/ja/index.html
976デフォルトの名無しさん:2007/01/22(月) 21:22:36
>>975
そのビジネスロジックの絡んだ1:Nってのがあいまいすぎてわからない

S2TigerつかってるならそれはEJB3.0とほぼ同じだよ
@EJBってフィールドインジェクションとXMlで面倒なのは一切なし
JavaEE5に準拠していればJPAもコネクションプールからDIしてくれるからDB接続等は意識していない

技術的なEJB2との互換性はほぼゼロ(お互いに呼べるけど)だからEJB2ってのと3は別物だと思っていいよ
EJB3.0はSeasar2+JPA(O/Rマッパ)内蔵で非常にシンプル
開発においてSpringやSeasar2より敷居が低いのにはまじで驚ろくはず
977デフォルトの名無しさん:2007/01/22(月) 21:27:04
そこで JBossSeamなんですよねw
978デフォルトの名無しさん:2007/01/22(月) 21:33:19
>JPAもコネクションプールからDIしてくれるから
いまいちわからん
979デフォルトの名無しさん:2007/01/22(月) 22:33:10
>>976
> S2TigerつかってるならそれはEJB3.0とほぼ同じだよ

つS2Tigerで@EJBできるからな
ttp://s2container.seasar.org/ja/ejb3.html
980デフォルトの名無しさん:2007/01/22(月) 22:34:15
ファサードってなによ?w
981デフォルトの名無しさん:2007/01/22(月) 22:43:27
この前魔界に帰ったな
つか、このスレ九州くせぇw
982デフォルトの名無しさん:2007/01/22(月) 23:02:01
>>973
ついていきたくてもWASが対応するまで無理
JavaSE5だって去年やっと対応したが現場じゃこれから
今年こそはアノテーション使いたいよw
好き勝手使える人は気楽でいいよな
983デフォルトの名無しさん:2007/01/22(月) 23:04:43
>>980
複数の呼び出しを一まとめにして呼べと言う
GOFのデザパタ中でもっとも面白くもなんともないパターン。
984デフォルトの名無しさん:2007/01/22(月) 23:13:34
>>980
facade
俺にはファケードとしか読めねぇと思ったが
フランス語らしくCの下に髭みたいのが生えてる文字が正式らしい。
985デフォルトの名無しさん:2007/01/22(月) 23:19:43
>好き勝手使える人は気楽でいいよな
classicなものを使い続けられる人の方が気楽なのでは?
986デフォルトの名無しさん:2007/01/22(月) 23:22:15
980はファサードという単語の意味が分からないんじゃなくて、975のファサードの存在意義が理解できないんじゃねーか?


みんな975みたいなことしてんのか?
ビジネスロジックを内包したファサードってなんだよ?
DTOでもなくドメインモデルでもないクラスってなんだ?
987デフォルトの名無しさん:2007/01/22(月) 23:25:35
>>985
新旧問わず自分で選んだものを好きに使える人は気楽
988デフォルトの名無しさん:2007/01/22(月) 23:31:09
>987
気楽という意味がわからん。


989デフォルトの名無しさん:2007/01/22(月) 23:32:37
お気楽極楽
990デフォルトの名無しさん:2007/01/22(月) 23:34:39
公務員的エンジニアの方が気楽だと思うけどな・・・
991デフォルトの名無しさん:2007/01/22(月) 23:38:01
ところでさっきから出てる Spring Remoting てのは HttpInvoker に限らない話?
当方 Spring Remoting の RMI なら使ったことありました。
本来ならスキーマコンパイラ走らせたりいろいろ面倒なところ、
ビーン定義でサクっと動くのはとても楽。
Javaの世界に閉じてるなら RMI で良いよって感じです。
Java外も絡むならWebServiceかな。

にしても Spring WebService がなかなか Release にならんですね。
ていうか、O/X Mapping から Relaxer の項目消されてるし・・・
992デフォルトの名無しさん:2007/01/22(月) 23:49:26
S2JMSが一向に正式リリースされる気配が無いので
Springに転向したおいらが来ましたよ。
993デフォルトの名無しさん:2007/01/22(月) 23:50:21
>>978
EntityManagerのDI

>>979
同じことが出来るなら人材確保やメンテ考えて標準APIのほうがいいからね
994某スレ167:2007/01/23(火) 01:34:22
んと、まず謝っとく。スレ違いスマソ>ALL

>>986
まぁ、所詮は30台後半でも実装メインで食ってるしがないIT土方の寝言ではありますが(^^;
ただ、はぶさんの「FKかっこわるい。そのへんも全部『○○関係テーブル』って名前でDBに入れとけ」ってのも、なんか違うような気もしないでもない。


>>991
んと、昨日買ってきたばかりの「Spring2.0入門」によると、HessianとBurlapも使える……と、書いてある(^^;
ただ、「ふつーはHttpInvokerでいいんぢゃね?」とのこと。
995デフォルトの名無しさん:2007/01/23(火) 02:26:01
>994
お前が言ってる事も違うような気もしないでもない。
焦点も内容も。

OOPしてないんだろうなきっと。
してないならしてないで構わんのだが、DTOとビジネスロジックの切り分けぐらいはしておいたほうが良いと思うぞ
996デフォルトの名無しさん:2007/01/23(火) 07:50:29
>>993
EntityManagerのDI を「コネクションプールからDI」ってのは
「お父さんとお母さんが結婚したら子供が生まれる」ってぐらい短絡的。
途中のすごく重要なところが抜けている。

DIされたEntityManagerはJDBCコネクションプールとは直接関連しない。
997デフォルトの名無しさん:2007/01/23(火) 10:44:05
>>996
同じ意見。
説明が下手というか、理解していないだろうね。
簡単なサンプルプログラムで試してみて簡単簡単♪って感じで、
実プロジェクトで使っているわけでもなさそうだし、
実プロジェクトで導入できるか評価するといったレベルで使ったわけでもなさそう。
@ITやThink ITなんかの記事読んで、知ったかってとこかな?
998デフォルトの名無しさん:2007/01/23(火) 10:46:19
>>996
おれも思った。
おれはDAO(JPA)のテストする時、コネクションプールなんて設定してないぜw
999デフォルトの名無しさん:2007/01/23(火) 10:49:27
>>996
私もそう思いました。
Spring2.0入門のJPAの章にあるサンプルでもコネクションプールは使っていませんね。
それに「コネクションプールからDI」って本当に意味がわかりません。
DIってどういう意味で使われているのでしょうか。
1000デフォルトの名無しさん:2007/01/23(火) 10:53:03
同意が多いと自作自演に見えてくる2ch脳な俺
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。