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

Java Spring Frameworkを語るスレ

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

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

語るべし。
04564552005/07/16(土) 17:30:24
ああ>>451-452の流れか。>>455は取り消し(ワラ
0457デフォルトの名無しさん2005/07/19(火) 10:34:04
というか誰にレスしてんだ
0458デフォルトの名無しさん2005/07/24(日) 22:38:13
これが最近有名なJSFって奴ね。
Javaは最新の技術追うのが大変(@@)
0459デフォルトの名無しさん2005/07/25(月) 01:15:53
==============================
キチガイが狂った独り言を書き込み中
==============================
0460デフォルトの名無しさん2005/07/25(月) 07:37:48
>>441
applicationContext.xmlの中でHibernate Annotationsの設定がかけるようになるってことみたいだね。
LocalSessionFactoryBeanを使う場合は、hibernate.cfg.xmlを書いておく必要があった。
0461デフォルトの名無しさん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クラスパスに突っ込んでやるとエラーになるんだけど…。

対処方法ってなんかある?
04624612005/08/08(月) 00:45:20
事故解決しますた。orz
0463デフォルトの名無しさん2005/08/08(月) 01:32:41
いちお、解決方法きぼんぬ
0464デフォルトの名無しさん2005/08/08(月) 12:18:04
今度は aopallience がねえよって怒られて
それを修正したとかそんな流れ?
04654612005/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
が出ます故。これで動いたは動いたケド、正しいかどうかは…。
0466デフォルトの名無しさん2005/08/08(月) 20:27:13
>>464
だいたいあってたね。
0467デフォルトの名無しさん2005/08/10(水) 12:47:00
だいたいってことは、正確にはどーすればよいわけ?
0468デフォルトの名無しさん2005/08/10(水) 20:51:17
CGLIB とかのライブラリは
Spring 付属の jar をぶっこんだ?
まだ 1.1.7 使ってて 1.2 系は試してないけど
付属の jar 入れとけば間違いは少ないと思う。
04694612005/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してください。

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

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

ttp://www.techscore.com/tech/Others/Spring/1.html
にしっかり書いてありました。orz
0472デフォルトの名無しさん2005/08/19(金) 12:55:20
Spring Beans XML Editor (Spring IDE for Eclipse)
ttp://springide.org/project/wiki/BeansXmlEditor
Screen Shot 見る感じだと
とりあえず欲しい機能は結構揃っているような。
0473デフォルトの名無しさん2005/08/25(木) 16:33:37
http://www.springframework.org/springide/release-123
0474デフォルトの名無しさん2005/09/07(水) 09:38:35
KingはRodが大嫌いなんだとさw

http://houseofhaug.net/blog/archives/2005/08/12/hibernate-hates-spring/
0475デフォルトの名無しさん2005/09/07(水) 09:53:15
Hibernate3 でトランザクション周りが結構変わって、
Spring とかなり方向違うなぁと感じたりはする。

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

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

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

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

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

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


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

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

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

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

DI使うと部品作って組み立てるプロセスが面白くて、楽しく開発は出来るんだけど、
アホには使いこなせないからあまりポピュラーにはならないかもしれない
0493デフォルトの名無しさん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

なにか見落としがあるのでしょうか?
あうあぅ締め切りがあさってです。助けてください・・・
0494デフォルトの名無しさん2005/09/20(火) 00:11:05
あーーすみません
エラーメッセージがまちがっていました。。
javax.servlet.ServletException: Neither Errors instance nor plain target object for bean name 'user' available as request attribute
0495デフォルトの名無しさん2005/09/20(火) 01:41:00
まだ490みたいなこと言う人居たのか。すげえな。世の中って。
0496デフォルトの名無しさん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 でそれに類する処理が必要かどうか、存在するのかの確認と、
デバッガで動かしてリクエストの中身を覗いてみてはどうでしょうか?
0497デフォルトの名無しさん2005/09/20(火) 20:30:51
>>495
そうでもないんじゃない?

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

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

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

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

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

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

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

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

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

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

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

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

224 にも張られた内容見るといろいろ差があるなとは思う。
結局AOPに対するアプローチが一番の違いか?
Spring はどこまでも POJO マンセーな感じ。
良い意味でも悪い意味でも。
0548デフォルトの名無しさん2005/10/27(木) 12:38:18
>>547
JTA実装するかしないかの差は、両者のトランザクション管理に対する考えの違いでもある。
JTAを標準としてJDBCトランザクションを排除していこうとしてるのがS2
JDBCもJTAも、DIコンテナがラップして利用者に統一的に使って貰おうとしてるのがSpring
0549デフォルトの名無しさん2005/10/27(木) 12:39:51
>>547
POJOマンセーはSeasarのほう。
Springには、何かしたかったら、こういうインターフェースを実装しろ
というのがいろいろあるけど、Seasarはそういうのがほとんど無い。
0550デフォルトの名無しさん2005/10/28(金) 01:25:53
jsfを使うんだけどspringはどの段階で作り始めればいいんですか?
ある程度jspとかbeanとか決まってから?
0551デフォルトの名無しさん2005/10/28(金) 09:21:16
>>550
君の脳内が整理されたら。
0552デフォルトの名無しさん2005/10/28(金) 10:56:12
Spring 自体は作らんだろ。作らんよね?
Spring 自体は作りませんね。
0553デフォルトの名無しさん2005/10/28(金) 14:25:10
そんなレスはいらんねん
0554デフォルトの名無しさん2005/10/28(金) 18:52:00
なんかすごいヤシが来たな、ワクワク
0555デフォルトの名無しさん2005/10/30(日) 17:47:22
(・∀・)ハイーキョ
■ このスレッドは過去ログ倉庫に格納されています