1 :目黒クラスタ ◆0anDvOSTbk 2008/11/21(金) 00:49:36
2 :デフォルトの名無しさん2008/11/21(金) 01:11:55
Springスレってテンプレないんだっけ?
取りあえずこんなんでどーよ?


Spring-Java/J2EEアプリケーションフレームワークリファレンスドキュメント(2章まで最新版)
ttp://andore.com/money/trans/spring_ref_ja.html

EclipseプラグインSpring IDEを使ってみよう (1/3) - @IT
ttp://www.atmarkit.co.jp/fjava/rensai4/spring2_01/spring2_01_1.html

Springは「2.0」でどんだけ便利になったの? (1/3) - @IT
ttp://www.atmarkit.co.jp/fjava/rensai4/spring2_02/spring2_02_1.html

Spring 2.0で自分なりの開発スタイルを確立しよう (1/3) - @IT
ttp://www.atmarkit.co.jp/fjava/rensai4/spring2_03/spring2_03_1.html

【ハウツー】Spring 2.0を早速使う - どのくらい簡単になった? (1) 待望のSpring Framework 2.0リリース (MYCOMジャーナル)
ttp://journal.mycom.co.jp/articles/2006/10/05/spring20/

Spring 2.0によるDBアプリケーションの作成
ttp://www.okisoft.co.jp/esc/spring/index.html

InfoQ: Spring 2.0: 最新情報と Spring 2.0 が重要な理由
ttp://www.infoq.com/jp/articles/spring-2-intro

InfoQ: Spring 2.5の新機能―Part 1
ttp://www.infoq.com/jp/articles/spring-2.5-part-1

InfoQ: Spring 2.5の新機能を使ってアプリケーションを作る(その1)
ttp://www.infoq.com/jp/articles/spring2.5-1
3 :目黒クラスタ ◆0anDvOSTbk 2008/11/21(金) 01:14:48
>>2
おぉ!サンクス!
助かったよ。
4 :続き2008/11/21(金) 01:18:23
InfoQ: Spring 2.5の新機能を使ってアプリケーションを作る(その2)
ttp://www.infoq.com/jp/articles/spring2.5-2

【書籍】

Spring入門
ttp://www.amazon.co.jp/dp/4774123412/

Spring2.0入門
http://www.amazon.co.jp/dp/4774130001/

SpringによるWebアプリケーションスーパーサンプル
http://www.amazon.co.jp/dp/4797334223/


こんなとこでいいかな?
5 :デフォルトの名無しさん2008/11/21(金) 01:37:01
IoCとかDI自体についてはこの辺がいいのかな?

Inversion of Control コンテナと Dependency Injection パターン
ttp://kakutani.com/trans/fowler/injection.html

Inversion of Controlパターンでコンポーネント間の結びつきを弱める - japan.internet.com デベロッパー
ttp://japan.internet.com/developer/20051011/28.html

あと2スレ目だけ以下にあった。

【DI】Java Spring Frameworkを語るスレ 2.0
ttp://www.23ch.info/test/read.cgi/tech/1169517585/


手玉が尽きたんで、あとよろしく。
6 :デフォルトの名無しさん2008/11/21(金) 08:40:39
staticフィールドに対してAutoWiringする標準的な方法って何かありますか?
ユーティリティクラス内で使う設定をSpring管理にしたいのですが・・・。

一応、インスタンスメソッドとしてsetter用意すればされるようなのですが、その他に何かやり方があれば教えてください。
7 :デフォルトの名無しさん2008/11/21(金) 18:38:43
>>6

そのやり方だとstaticメソッドしか持たないユーティリティクラスでも、Springによって1つはインスタンスが作られるんだよね?

他のやり方だと一応こんなんやってる人いたけど、いいのか悪いのかは分からん。

ttp://d.hatena.ne.jp/futokiyo/20080712/1215848272
8 :デフォルトの名無しさん2008/11/22(土) 01:10:13
Springの新しいメンテナンスポリシーでJava界の勢力図が変わる - ひがやすを blog
ttp://d.hatena.ne.jp/higayasuo/20080921/1221962998

Springは心を改めた - ひがやすを blog
ttp://d.hatena.ne.jp/higayasuo/20081009/1223535065
9 :デフォルトの名無しさん2008/11/22(土) 22:44:58
Bean定義ファイルでutil:mapのkeyとvalueに任意の型を指定したい場合ってどう書けばいいですか?
デフォルトだとString型ですよね?
10 :目黒クラスタ ◆0anDvOSTbk 2008/11/22(土) 23:27:34
>>9
こんな感じ。

<util:map id="priceMap">
  <entry>
      <key>
        <bean class="java.lang.Integer" scope="singleton">
          <constructor-arg value="3" />
        </bean>
      </key>
      <bean class="java.lang.String" scope="singleton">
        <constructor-arg value="150円" />
      </bean>
  </entry>
</util:map>
11 :デフォルトの名無しさん2008/11/24(月) 23:10:32
もしかしてもう誰も使ってないの?
誰かなんか語ろうぜ・・・。
13 :デフォルトの名無しさん2008/11/26(水) 19:19:10
まあ、普通に使っている人にしてみれば、今更特に語ることもないからな〜
14 :デフォルトの名無しさん2008/11/28(金) 03:51:34
これだけレスつかないってことは誰もSpring使ってないんじゃないかと妄想。
15 :デフォルトの名無しさん2008/12/01(月) 22:43:29
>>14
これから使う予定です
軽く本で勉強したいのですが、お勧めの書籍などありましたら、教えてください
17 :目黒クラスタ ◆0anDvOSTbk 2008/12/04(木) 17:21:11
>>15

テンプレにもあるが和書なら↓。

Spring入門
ttp://www.amazon.co.jp/dp/4774123412/

Spring2.0入門
ttp://www.amazon.co.jp/dp/4774130001/
16 :デフォルトの名無しさん2008/12/01(月) 22:59:12
うんこ
18 :目黒クラスタ ◆0anDvOSTbk 2008/12/04(木) 17:22:14
>>16

荒らすのやめてください!
19 :デフォルトの名無しさん2008/12/04(木) 23:34:23
とある魔術の禁書目録<インデックス>

舞台は総人口230万人弱、東京西部の大部分を占める巨大な都市。
その人口の約8割が学生ということから、『学園都市』と呼ばれていた。
学園都市の生徒達は、超能力を発言させるための特殊なカリキュラムが組まれていて、
その能力によって、『無能力』(レベル0)から『超能力』(レベル5)までの6段階で査定されていた。
主人公・上条当麻(かみじょうとうま)は、学園都市の高校生だが、その評価は落第寸前の無能力(レベル0)。
なぜなら彼の右手には、“異能の力ならなんでも打ち消す”『幻想殺し』(イマジンブレイカー)と呼ばれる能力が宿っていたからだ。
そして彼はこの右手のおかげで、“神のご加護”まで打ち消してしまい、常に不幸な人生を送っていた。
しかし、そんな日常に突如変化が訪れる。 彼の部屋に、不思議少女が空から登場というありがち展開に。
「ありえねぇ……」と上条当麻はつぶやくが、自らを『禁書目録』(インデックス)と名乗るその少女はこう言った。
自分は“魔術”の世界から逃げてきた――と。
そこへインデックスを追ってきた“魔術師”も現れた。
“魔術師”の狙いは、彼女、インデックスの頭の中にあるという“10万3000冊”の“魔道書”だという。
当麻はインデックスを守るため、その“異能を打ち消す力”を持つ右手を握り締める。
“科学”(上条当麻)と“魔術”(インデックス)の出会から、物語は始まる……!
20 :デフォルトの名無しさん2008/12/05(金) 02:18:50
とてもおおきな Java プロジェクトに途中から入りました。
DI コンテナは Spring 2.0を使っています。*.java は 5000 以上あります。

Eclipse 3.4 に Spring IDE を入れてみたのですが、
ここまで大きいとかなり Spring IDE の builder が重いです。

デフォルトの状態だと、application.xml や *.java に修正しただけで(保存しなくても)
整合性チェックが走り、とても重いのですが、これは仕方ないでしょうか?

Spring IDE の builder が、*.xml だけでなく *.java を修正しただけで
builder が走るのは、たとえば *.java を修正して setter メソッドがなくなったら、
application.xml に赤マークをつける必要があるので、考えてみると仕方ない気がするのですが・・・

Eclipse の、設定→Spring の use check detection for java source files を
外してみましたが、結局 Ctrl - s を押してセーブすると、また延々と builder が走るので
結局プロジェクトバリデータ、プロジェクトビルダーのすべてのチェックを外しています。

これだと application.xml を修正するときのコンテンツアシストぐらいしかメリットがありません。

いちおう、ソースをリポジトリにコミットする直前に、プロジェクトバリデータ、プロジェクトビルダーの
チェックをつけ直して、クリーンして xml に間違いがないか確認していますが、やや面倒です。

ながくなりましたが、巨大プロジェクトで Spring IDE を使うとき、みなさんどうしてますか?


21 :デフォルトの名無しさん2008/12/05(金) 09:48:00
参考にならないと思うけど、最近うちで作ったシステムの話。

春先から作りはじめて10月から稼働を始めた3000javaなシステム。
Spring 2.5でアノテーションを使っているので、
applicationContext.xmlはSpring IDEも使わず手書き。

詳細は以下。

規模はアプリケーションレイヤのみで2500(700は自動生成)、
フレームワークレイヤは500。

そのうち、Springで管理するコンポーネント数300チョイ。

アクション:50(ユースケース単位)
ロジック:90
データアクセス:140

はアノテーションベースで管理。

applicationContext.xmlに手書きしているのは25(一番多いのはDWR用)。
22 :デフォルトの名無しさん2008/12/06(土) 00:28:59
/   //   /   //    ______     /   //   /
 / //   /|   r'7\ ,.ヘ‐'"´iヾ、/\ニ''ー- 、.,   /    /
  /   / |  |::|ァ'⌒',ヽ:::ヽrヘ_,,.!-‐-'、二7-ァ'´|、__
`'ー-‐''"   ヽ、_'´  `| |:::::|'"       二.,_> ,.へ_
         /  //__// / / /      `ヽ7::/
 か っ も  |  / // メ,/_,,. /./ /|   i   Y   //
 ァ  て う.  |'´/ ∠. -‐'ァ'"´'`iヽ.// メ、,_ハ  ,  |〉
  |  約 ク  ヽ! O .|/。〈ハ、 rリ '´   ,ァ=;、`| ,ハ |、  /
  |  束 ソ   >  o  ゜,,´ ̄   .  ト i 〉.レ'i iヽ|ヽ、.,____
  |  し  ス  /   ハ | u   ,.--- 、  `' ゜o O/、.,___,,..-‐'"´
  |  た  レ  |  /  ハ,   /    〉 "从  ヽ!  /
  |  じ  は  |,.イ,.!-‐'-'、,ヘ. !、_   _,/ ,.イヘ. `  ヽ.
 ッ .ゃ .立   |/     ヽ!7>rァ''7´| / ',  〉`ヽ〉
 ! ! な  て   .',      `Y_,/、レ'ヘ/レ'  レ'
   い  .な    ヽ、_     !:::::ハiヽ.   //   /
   で   い   ./‐r'、.,_,.イ\/_」ヽ ',       /  /
   す      /    `/:::::::/ /,」:::iン、 /    /
          〈  ,,..-‐''"´ ̄ ̄77ー--、_\.,__  /
      ,.:'⌒ヽ ´         | |  , i |ノ   `ヾr-、
(CV:松岡修造)
23 :目黒クラスタ ◆0anDvOSTbk 2008/12/06(土) 21:49:39
>>22

クソスレじゃないです!
荒らすのやめてください!!
25 :デフォルトの名無しさん2008/12/17(水) 23:15:59
164の友人ではないが(たぶん)、転勤で熱田区から新宿区に今年転居した。
東京都心部は、名古屋駅〜金山〜今池ぐらいの鉄道状況が名古屋市内全域に整備された感じ。
29 :デフォルトの名無しさん2009/02/03(火) 00:00:05
全然人が来なくなったね...。
SpringSourceが東京でトレーニングをするらしいけど、どれくらい受ける人いるんだろう?
ttp://www.springsource.com/training/sp001/nrt-20090224/?geonr
30 :デフォルトの名無しさん2009/02/05(木) 17:42:09
Spring の jar をダウンロードするために、
ひさしぶりに http://www.springframework.org にいったが、
downloads ページに行ったら、community の方でも、メアド登録が必要になってた。
なんかめんどくさくなったなぁ。

どうしてもいやなひとは、maven のリポジトリ等から直接落とせるけど。
31 :デフォルトの名無しさん2009/02/05(木) 21:32:24
「やべぇ…なにこれ。マジでパネェ…。」
思わず立ちすくみ息を飲んだ。
目の前にはドロハンにWレバー、KEOcarbon、9速i-motion9化
されたESCAPE Ri3があった。
黒光りするシックなフレーム、野性を感じるスタイリング…。

「俺のRi3に何か?」
どうやらこいつが持ち主のようだ。パッとしない感じで、オドオドしている。
「ああ、ごめん。すごいイジってるんだなと思ってさ」
持ち主の目が急に輝きだし、雄弁に語り始めた。
ピストバイクに間違われたこと、TREKをぶち抜いたこと、箱根峠で足をつかなかったこと、
湘南で一番イケてるescapeという名の英雄に憧れたこと…。

ひとしきり話したあと、彼は俺に聞いた。
「君ももしかしてスポーツ自転車乗りなの?ひょっとしてRi3乗り?」
すこし躊躇ったが正直に答えた。
「…ああ、そう。自転車乗り。俺の自転車はあれなんだ。」
彼は俺の指した方向を見て驚愕した。
「あ、あれって…まさかREVIVE!?」
「…いや、i3なんだ…。REVIVE i3ってね」
彼は涙目になっていた。そして顔を真っ赤にしてこういった。
「う、うらやましくないぞ!俺のESCAPEには野性があって、プライドがあるんだ!」
ESCAPE Ri3に跨り、彼は逃げるように去った。ノーヘルのままで。

まいったな。確かに内装クロスごときをあんなヘンテコにイジってるから、
面白がって見てたが、傷つけるつもりはなかったのに…。
彼の最後の言葉を思い出して、我慢していた腹筋がとうとう決壊した。
「さて、野性とプライドとやらをぶち抜きに行くか……プッ」
遅いから、先に発進したかったのに。
キング オブ 内装変速クロスバイク、ESCAPE Ri3。
32 :デフォルトの名無しさん2009/03/08(日) 19:17:57
applicationContext.xml において、<util:list> タグを使うと List のインスタンスを作ることが出来ます。

<util:list id="hogeList">
 <value="aaa"/>
 <value="bbb"/>
 <value="ccc"/>
</util:list>

この hogeList という bean を、List を引数に持つ setter メソッドがある bean に
Setter インジェクションすることが出来ます。

んで、Integer 型のインスタンスを作ることは出来ないでしょうか?
以下のようにやればとりあえず出来たが、なんかちょっとダサい。

<bean id="MAX_VALUE" class="java.lang.Integer">
 <constructor-arg>
   <value>5</value>
 </constructor-arg>
</bean>

<util:***> をさがしてみたけど、なさそうなのですが・・・
38 :デフォルトの名無しさん2009/05/05(火) 02:34:09
Springって、Webアプリケーション以外にも有用でしょうか?
小規模(5kステップ程度)なスタンドアローンアプリを作ろうとしています。

解説サイトを見ても、Webアプリを作る前提の解説ばかりなので、
スタンドアローンアプリでのSpring利用を体験されている方がいれば、お話を伺いたいです。
39 :デフォルトの名無しさん2009/05/05(火) 03:54:18
そもそもどうしてそのアプリでDIコンテナを使おうと思ったのかね?
それを考えると有用かどうかは解るんじゃないの?
40 :デフォルトの名無しさん2009/05/05(火) 06:14:45
返信ありがとうございます。

まず、作成しようとしているアプリは、対象サーバから情報を取得し、
その情報を加工して出力するアプリです。
現段階で、出力方法を一種類に決定できないため、
DIを利用し、後で出力用クラスを入れ替え可能にしておくと、
アーキテクチャとして綺麗になるかなと考えていました。

ただ、DIを使うまでもなく個別にコンパイルしてもよいため、
出力用クラスの入れ替え以外にも、単体テストが行いやすいなど、
スタンドアロンアプリでのDI利用の大きなメリットが存在すれば
利用してみたいと思い、質問していました。
41 :デフォルトの名無しさん2009/05/07(木) 00:03:30
>>40
そのアプリは Swing などの GUI をもつものなのか、
それともバッチなのかな?

web アプリだけでなく、バッチでも Spring 使っているところは多いと思うし、
たぶんあなたの用途でも有効利用できると思うよ
43 :402009/05/08(金) 02:52:08
>>40
GUIは持たないのですが、サーバーを監視し続けるデーモンを作ろうとしています。

Spring有効そうですね。これまで使ったことなかったので、決断できずに質問をしていました。
JUnitとの連携でアノテーションが出てきたり、不明な点もありますが、習うより慣れろですね。
利用してみます。ありがとうございました。
44 :412009/05/08(金) 05:13:39
>>43
なるほど。

いきなりアドバンスドな例になるけど、Apache Geronimo や ServiceMix などは、
自分自身の内部で Spring を使っている。(モジュールを DI 化している)

Spring はいろいろなことが、いろいろな書式で出来るから翻弄されるけど、
本質は「オブジェクトを DI 化して、差し替え可能にする」ことなので、それを忘れないこと。

Spring + JUnit でも、アノテーションを使わずにできる。
Spring のいいところは、やりたいことが、アノテーション方式でも XML 方式でも、複数のやり方が用意されている点。

初めてということなので、ググりまくるより、以下の2冊を頭っから読んでいった方がいいと思う。
少し古い面もあるけど、それこそ本質が書いてあるので、
ググって頭でっかちになるよりいいと思う。

http://gihyo.jp/book/2005/4-7741-2341-2
http://gihyo.jp/book/2007/4-7741-3000-1

サーバを監視続けるデーモンとのことだけど、
自分の例では、よく Web サービスクライアントとなる部分を Spring の DI でつくるけど、
クライアントクラスはインターフェースとして定義しておき、
実装(具象クラス)を、Axis2 を使ったものにしたり CXF を使ったものにしたり、複数用意して
applicationConfig.xml の設定で使い分けたりしている。(CXF だと動くのに Axis2 だと動かない、など)

そのクライアンととなるクラスを呼び出す、親のサービスクラスをテストするときは、
Webサービスクライアントをモックにしてしまえばいいわけだから、何かの値をハードコーディングするような
クラスを書いてしまい(Axis2 も CXF もいらない)、テスト時は applicationContext.xml でその具象クラスを DI するようにすればよい
(もちろん EasyMock などを使っても良いが、ここでは触れないでおく)

デーモン化したければ、quartz と組み合わせる例も上記の書籍(上の方)に載っている。
実業務で使えるものかどうかはわからないが、イメージはつかめると思う
45 :402009/05/12(火) 00:45:29
>>41
返信が遅くなりました。申し訳ありません。
多くのアドバイスありがとうございます。かなり具体的な内容でそのまま役に立ちそうです。
Springをある程度理解してから、それぞれ調べてみます。

今とりあえず、上の本「Spring入門」を購入し、読んでいます。
Springの説明だけでなく、随所に挿入されているコラムがとても参考になります。
まだ最初しか読めてませんが、P.23の「安定依存原則と依存関係逆転原則」など
アプリケーション設計を考える上での重要な概念を学べて、
今後の開発で活きてくる知識だと感じています。

たくさんのアドバイスありがとうございました。
46 :デフォルトの名無しさん2009/05/17(日) 20:00:22
Spring DM使い始めたが、これ使うとOSGi用のBundleActivatorさえ要らないんだな。
SpringとOSGiを使いながらSpringやOSGiのAPIへの依存さえコード上には存在しなくなる。
サーバー側だけじゃなくて、拡張性持たせるクライアントアプリとかにも良さそう。
48 :デフォルトの名無しさん2009/05/17(日) 22:01:50
Eclipse って、もうすでに、中で OSGi(Equinox) が動いているんだっけ?
49 :デフォルトの名無しさん2009/05/17(日) 22:35:42
>>48
3.0からそうだよ
50 :デフォルトの名無しさん2009/05/17(日) 22:36:12
>>48
3からはOSGiベースだよね。要するにOSGiバンドルの集合体=Eclipse 3.x。
ただ元々OSGiじゃないプラグインシステムを置き換えたから、
独自仕様とOSGiの部分が混在してる。

ServiceMix Kernelは4からFelix(OSGi実装)+SpringDMでやってたっけ。
ドキュメントが少なくてまだよく分かってない部分も多いけど、
あの方向性は興味ある。
51 :デフォルトの名無しさん2009/05/17(日) 22:36:15
いまだに俺はOSGiがなんの役に立つか分からないし、実現される気がしない。なんだあれ?
心の中で「オスギ」と読んでるのは俺だけでいい。
52 :デフォルトの名無しさん2009/05/17(日) 22:41:51
>>51
元々モバイル用とも想定してたから動的にモジュールのロード云々とか
言われるけど、それよりもJava 7で入れるのどうのこうの言われてる
スーパーパッケージみたいな概念の方がより意味がある。
どのパッケージを外部に公開するか、どの外部パッケージの
バージョンいくつをインポートしろとかをメタデータに記述出来るので
例えばJAX-B 2.1と2.0を同じランタイム上で混在させたり出来る。
Eclipseが採用したのもたぶんその辺りがプラグインアーキテクチャ向けだったからだろうね。
53 :デフォルトの名無しさん2009/05/17(日) 22:51:38
54 :482009/05/18(月) 02:49:05
みなさんレスどうもありがとうございます。

>>50
おー、ServiceMix を追っかけている人発見。
自分も追いかけをしているけど、思った通り動かない部分もあるし、
ドキュメントもだんだん追いつかなくなってきているし、ServiceMix は正直疲れる。

>>51
Java の ClassLoader で困ったりすると、OSGi に興味がわくと思いますよ。
APサーバ本体に(たとえば) spring の jar をつっこんでいて、デプロイしたアプリケーションに
ちょっと違うバージョンの spring の jar を含めていて、なんで NoSuchMethodError がでるんだろう、とか。
55 :デフォルトの名無しさん2009/05/18(月) 14:41:04
>>54
ServiceMixとかも含めて、Spring DMとOSGiフレームワーク使って色々開発
するときの一番めんどくさいのは、やっぱりまだOSGiバンドル化したものが
有名どころだけで、ちょっとマイナーなライブラリだと自分でラッピングしなきゃ
行けない所だろうなあ。Mavenとか使ってると特にそう思う。
SpringSourceのバンドルレポジトリは結構がんばってるけど
56 :デフォルトの名無しさん2009/05/20(水) 12:55:16
Springでトランザクション管理を行うtxスキーマについて質問なのですが、
propagationで使用する「REQUIRES_NEW」と「NOT_SUPPORTED」では何が違うのでしょうか?

以下のページでは既存のトランザクションを停止し、
(新たなトランザクションを開始|トランザクション外で処理を実行)との記載がありますが、
動作的に違いがあるのでしょうか?

http://www.techscore.com/tech/Others/Spring/6.html
66 :592009/05/21(木) 16:14:52
>>60 >>65 レスどうもありがとうございます。
指摘を受けて、過去の案件のソースを見直したところ、たいていのサービスクラスには REQUIRED をつけていました。

よって >>59 の↓は訂正します。
> まぁwebアプリで、業務データの書き込みに使うトランザクションは、REQUIRES_NEW が多いと思います。

>>65 さんの説明でほぼ終了していますが、 >>56 さんに誤解のないように説明しておきます。
○web アプリの例として、Struts + Spring とします。
○まず、(他のみなさんはどうかわからないけど)私は tx スキーマ(あるいは @Transactional アノテーション)で
 挙動を制御するのはサービスクラスに対してで、DAO にはつけていません
 # DAO は必ず、とあるサービスクラスから呼び出すこととし、Struts の Action からの直呼出は禁止にする
 # >>59 の例では LogDao は NOT_SUPPORTED にすると説明しましたが、
 # 実際にはそうせずに LogService 経由にし、LogService を NOT_SUPPORTED にしています。
 # 混乱させてすみません

●REQUIRED は、>>56 の TechScore のサイトの通り、以下のようになります。
・すでにトランザクションがあれば、そのトランザクションの中に合流(参加)
・なければ、新たにトランザクションを開始

57 :デフォルトの名無しさん2009/05/20(水) 13:07:14
>56
書いてあるとおりだが、何がわからない?
63 :デフォルトの名無しさん2009/05/20(水) 19:29:20
>>62
それは >>59 に対して? それとも >>57 に対して?
58 :562009/05/20(水) 13:19:53
>57
懸念しているのがNOT_SUPPORTEDの場合、「既存のトランザクションを停止し、
トランザクション外で処理を実行」とありますが、
InsertやUpdate,Deleteのようにトランザクション外で実行されると困る処理があります。

また、REQUIREDの場合、「既存のトランザクション内で処理を実行」とありますが、
既存のトランザクション内で処理を実行してしまうと、どちらか片方で処理でロールバックが発生した場合には
両方ともロールバックされますよね?
結果的にWebアプリで使えるのはREQUIRES_NEWしかないように思えたのですが、考え方が間違っていたらどうぞ教えてください。
59 :デフォルトの名無しさん2009/05/20(水) 18:48:07
>>58
web アプリかどうかかより、「なにをやりたいか」だと思います。
まぁ web アプリだと、やりたいこともある程度偏ってきますが・・・

> 懸念しているのがNOT_SUPPORTEDの場合、「既存のトランザクションを停止し、
> トランザクション外で処理を実行」とありますが、
> InsertやUpdate,Deleteのようにトランザクション外で実行されると困る処理があります。

通販サイト、受注管理などのweb アプリで、画面から受け取った受注登録の情報を書き込むためにトランザクションを開始しているが、
最後に商品の受注を commit する前に、ログテーブルに書き込んでおきたいとする。
受注TBL への insert が失敗するとロールバックするのが普通だが、ログTBLへは commit しておきたい。

またログTBLへの書き込みなんかは、別に失敗してもかまわないので、トランザクション管理しないで(オートコミットで)書き込みたい。
(トランザクション管理しないほうがパフォーマンスがよいし)

こういうときに、LogDao が行うトランザクションは、別トランザクションにし、NOT_SUPPORTED を使ったりします。
んで、LogDao の処理が終わって戻ってくると、トランザクションが開始される。
受注TBLへの commit が失敗すると、業務的なDB更新はロールバックされるけど、ログTBLへの書き込みは行われている。

まぁwebアプリで、業務データの書き込みに使うトランザクションは、REQUIRES_NEW が多いと思います。
64 :562009/05/21(木) 11:54:25
>>59
Dion規制中により返信が遅くなりました。
回答ありがとうございます。ようやく使い方を理解することができました。
大きく勘違いしていたのは、>>62 さんも書いているように、
「既存のトランザクション」の考え方でした。
自分の中では、アクションクラスから呼ばれるビジネスロジックのメソッドの開始時点で
トランザクションの開始、ビジネスロジックを抜けるときにトランザクションの終了と
いうパターンのみを考えていました。

実際の使用では、ビジネスロジック内部でさらにDAOクラスごとにPROPAGATIONを使い分けているのですね。
>>59さんのLogDao、NOT_SUPPORTED の使い方の記載はわかりやすく助かりました。
65 :デフォルトの名無しさん2009/05/21(木) 13:24:17
>>59
サービス系クラスにREQUIREDのトランザクションをかけて、
それらを組み合わせて一つのトランザクションとして使うのが通常だと思う
EJBもデフォルトはREQUIREDだし、たしかSpringもそうだった筈
REQUIRES_NEWを使うのは、すでにトランザクションが開始されていて、
それには参加せずに処理を行いたいが、
その処理に対してもトランザクションを実行したいときとかのみ
67 :592009/05/21(木) 16:15:27
(続き)

Action からサービス呼出をするときに、サービスには REQUIRED にしておけば、
以下のようにサービスを多段呼びだししても、トランザクションは一つにまとまります。
多段呼び出ししただと、XxxService の中で YuuService を呼び出し、それが返って来て XxxService 内の (3)で
エラーが起きても、(1)、(2)もまとめてロールバックされます。

FooAction
 →XxxService
   (1)
   →YyyService
    (2)
   ←
   (3)
 ←

サービスに REQUIRED_NEW をつけてしまうと、XxxServce から YyyService を呼び出したときの
トランザクションが別になってしまうため、上述のように
XxxService の中で YyyService を呼び出し、それが返って来て XxxService 内の (3)で
エラーが起きた場合、(1)はロールバックされますが、(2)はcommitされてしまっています。

webアプリでこのようなことを明示的にやりたければ REQUIRED_NEW を使いますが、
たいていの場合は、>>60 さんや >>65 さんのいうとおり REQUIRED で事足りると思います。
(長々とすみません)
68 :562009/05/21(木) 23:41:35
>>59
> # 実際にはそうせずに LogService 経由にし、LogService を NOT_SUPPORTED にしています。
> # 混乱させてすみません

とんでもないです。
本レベルでしかSpringを用いた実装の経験が無いものですから、
経験者の方の意見とサンプルは非常に助かります。
丁寧なご説明、どうもありがとうございました。
60 :デフォルトの名無しさん2009/05/20(水) 18:50:57
なこたーない。9割方REQUIREDだよ
61 :592009/05/20(水) 18:51:19
ちょっとわかりにくい文章がありました。

下から3行目:
誤:んで、LogDao の処理が終わって戻ってくると、トランザクションが開始される。
正:んで、LogDao の処理が終わって戻ってくると、業務データのトランザクションが再開される。
62 :デフォルトの名無しさん2009/05/20(水) 19:20:00
既存のトランザクションってのを勘違いしてそう。
別スレッドのトランザクションとは独立してるぞ。
70 :デフォルトの名無しさん2009/07/17(金) 02:00:27
Spring について色々調べてるんですがいまいちよく分からない…。

これって結局なんなの?

DI とか抽象的すぎて意味不明だし。

結局これ使うと何が嬉しいの?誰か教えて…。
75 :デフォルトの名無しさん2009/07/17(金) 21:11:44
>>70
マジレスすると、画面とビジネスロジックとDBアクセスを完全に切り分けて
XMLで稼動するクラスやそのインスタンスが持つ初期値を切り替えましょ
ってとこ。それをいろいろ応用してくとspringの全体像に近づく。

COBOLや昔のVBライクなコーディングするようなプロジェクトには
まず必要ない。てかstruts1.1の提案しか出来ないSIerにも必要ない。
71 :デフォルトの名無しさん2009/07/17(金) 08:08:38
DI : 依存性の注入

簡単に言えば、オブジェクト間を疎結合にして、必要な依存は外部から解決してあげようって考え方。

Hoge hoge = new Hoge();
76 :デフォルトの名無しさん2009/07/17(金) 23:30:08
ところでいまさらなんだが、スレタイから Java 削らないか?
.NET 版も結構枯れてきていい感じだよ。
全然情報なくて悲しくなるけど。

Enterprise Library とか何がうれしいのかさっぱり分からん。
77 :デフォルトの名無しさん2009/07/18(土) 03:40:01
struts1.3 + spring2.5でdelegatingactionproxyで連携
しようと思っています。
この場合、DIするためにActionクラスにインスタンス変数を
持たなければならないのですが、この変数はスレッドセーフで
動作するのでしょうか?
しないならば、どのような解決策が考えられるでしょうか?
どなたかお知恵のある方、ご解答よろしくお願いします。
84 :デフォルトの名無しさん2009/07/18(土) 15:25:38
>>77
Spring上でActionクラスをprototypeに宣言した場合、
呼出し毎にインスタンスが作られるから複数スレッドで変数は共有しない
singletonにすると共有してしまう
Springと連携しない場合、基本的にStruts1のActionはスレッドセーフではないから注意

http://static.springsource.org/spring/docs/2.5.x/reference/web-integration.html#struts-delegatingactionproxy
79 :デフォルトの名無しさん2009/07/18(土) 11:38:32
>Actionクラスにインスタンス変数
おまえはActionクラスとサーブレットの違いをまず学習しろ。話はそれからだ。
81 :デフォルトの名無しさん2009/07/18(土) 11:46:51
最後に解答であるが、(ブラウザの文字エンコードに注意しつつ)
ttp://www.jajakarta.org/struts/struts1.2/documentation/ja/target/api/org/apache/struts/action/Action.html
これを読む。
82 :デフォルトの名無しさん2009/07/18(土) 13:07:26
83 :デフォルトの名無しさん2009/07/18(土) 14:49:33
>>82
>struts1.3 + spring2.5

strutsの思想が失敗だったのかも知れないが、struts1系を使おうと
するのにActionクラスに変数を持たせようとする設計がどうかしてる。
クラス変数にしなければならない理由もないだろ。一番簡単で陳腐で
よく使われてたのが、abstractをかましてexecuteを実装し、
そこで継承させるactionに共通で利用する変数を引数で渡す方法。
それか同期化する。
85 :デフォルトの名無しさん2009/07/18(土) 15:30:47
Springで管理するクラスなんてほとんどの場合がSingletonなんだから、
Actionのフィールドにすることは何ら問題にはならないと思うのだが、
何を騒いでいるのかね?キミたちは。
86 :デフォルトの名無しさん2009/07/18(土) 15:48:05
>>85
まぁそうなんだけど、prototypeの場合
Actionやサービスクラスをスレッドセーフ意識して作る必要が無くなるから
何か役立つ状況があるかもしれないし、知っておいて損は無い
87 :デフォルトの名無しさん2009/07/18(土) 16:00:34
>>85
んなアホのひとつ覚えのことはspringやってれば誰でも知ってる
90 :デフォルトの名無しさん2009/07/18(土) 17:33:10
どうやら、>>85が自分にアテられたと思っているようだ。
自意識過剰な人だね。
89 :デフォルトの名無しさん2009/07/18(土) 17:14:48
騒いでないだろうが。いまごろActionでスレッドセーフ云々とか
言い出す消防がいることに問題があるんだろ。
91 :デフォルトの名無しさん2009/07/18(土) 18:56:45
>>89
Struts1のActionのライフサイクルはSpringで好きに管理できることを
知らずに回答してる人がいることの方が問題な気がする
92 :772009/07/19(日) 00:29:25
77です。マルチポストしてすみませんでした。
期日が迫っている作業なのであせっていました。
どうやら変数のスコープをプロトタイプにしたところ
hashCodeが異なる値で取得出来たので問題なさそうです。
ありがとうございました。
94 :デフォルトの名無しさん2009/07/19(日) 23:20:52
77のマルチポストも問題だが、
その程度のメンバー抱えて
Spring使用に走ったアーキテクトは無能だな。
95 :デフォルトの名無しさん2009/07/21(火) 16:54:38
Spring を使ってみる事にしたんですが、こいつのコネクションプーリング
的なものは使った方がいいんでしょうか?

Struts でも似た様な事ができるんでしょうか?

何かいろんな所で色んな事ができるのでどれでやるのが一番いいのか
分からないんですよね…。
96 :デフォルトの名無しさん2009/07/21(火) 17:39:17
コンテナが管理するDataSourceをSpringで取得してDIするのが吉。
97 :デフォルトの名無しさん2009/07/21(火) 18:30:44
>>96
すいません、例えばこういうのを使うという事でしょうか。

<bean id="dsAdapter" class="org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS">
<property name="driver" value="org.postgresql.Driver"/>
<property name="url" value="jdbc:postgresql://xxxxx"/>
<property name="user" value="xxxxx"/>
<property name="password" value="xxxx"/>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.datasources.SharedPoolDataSource">
<property name="connectionPoolDataSource">
<ref local="dsAdapter"></ref>
</property>
<property name="defaultAutoCommit" value="false"/>
<property name="maxActive" value="5"/>
<property name="maxIdle" value="4"/>
<property name="maxWait" value="10000"/>
</bean>

他のサイトからパクってきたんですが。

例えば、これをあるパッケージ以下のクラスに全て DI したいとすると、
どういう方法がありますか?
98 :デフォルトの名無しさん2009/07/21(火) 18:46:06
>>97
ちがう。それはSpringで独自にDataSourceを作る方法。
他のサイトをパクる前に、付属のドキュメント見ろよ。
かなりわかりやすい部類だと思うけど。
99 :デフォルトの名無しさん2009/07/21(火) 19:44:25
>>98
Spring 付属のドキュメントですか?

読んだのですが、あれって DAO を作る事を前提としている
構造ではないんでしょうか?

DAO を作るのとかかったるいので、とりあえずプーリングだけ
してくれればいいと思っていたのですが…。

あっちでもプーリングだけとして使えるのでしょうか?
100 :デフォルトの名無しさん2009/07/21(火) 20:47:05
あと、ふと思ったんですが Struts の 〜Aware と DI って考え方が
似てますよね。

今 Interceptor で DataSourceAware(自作)としたクラスには
DataSource を注入しようとしているんですが、これって DI なのかな〜
と思いました。

まぁ抽象度は一歩低いのかもしれませんが。
101 :デフォルトの名無しさん2009/07/21(火) 21:18:21
あんたには無理ぽ
102 :デフォルトの名無しさん2009/07/21(火) 21:22:48
>>101
まぁとりあえずできました。

Spring で DI しようかと思ったんですが、いちいちデータベース
接続が必要なアクションに XML でごりごり書くのも面倒なので
〜Aware でやった方が楽ですね。型もしっかりしますし。

何かよく分かりませんが DBCP もうまく動いてる様なので
これでやってみます。
104 :デフォルトの名無しさん2009/07/21(火) 21:42:05
>接続が必要なアクションに XML でごりごり書くのも面倒
>型もしっかりしますし。


・・・ぷ。


まぁ、それで納得してるならいいけど。
105 :デフォルトの名無しさん2009/07/21(火) 21:52:33
>>104
いや、何か間違っているなら説明をお願いします。
Struts + Spring は初めてなので流儀が分かりません。

無理矢理 DI する事も可能だとは思ったんですが、
全部 Setter 書くなら結局一緒じゃないですか?
むしろ〜Aware でやっておけば XML にごちゃごちゃ
書かずに済む分記述も楽だと思うんですが…。
それじゃ結合がごにょごにょ…という話ですか?

あと、感心したんですが、Interceptor も Spring で生成
できるんですねぇ。Struts も Spring もよくできてますね。
ログインの Interceptor を作ったんですが、こいつに
ゲストの ID とパスワードを DI する事ができました。
106 :デフォルトの名無しさん2009/07/21(火) 22:18:23
セッターやゲッター手書き?
ide使えば、楽なのに。

spring界隈で使われる"pojo"は理解してる?
107 :デフォルトの名無しさん2009/07/21(火) 22:26:30
>>106
Eclipse を使ってます。

確かに getter, setter を書くのはまぁやれない事はないですが、
applicationContext.xml なりに全部の Bean に対する記述を
しなければならない訳ですよね?
(仮に全部の Bean で共通して使用する様なオブジェクトが
 あった場合)

Struts の〜Aware でやっておけば、そんな記述はいらない
ですし、その分楽なんではないかと…。

でもそれすると確かに POJO ではなくなってしまいますよね。
でもそれを言い出すと SessionAware とかも使えなくなって
きちゃう訳ですよね。ん?? そう考えると Session の内容を
DI できればいいんですかね。そんな事ってできるんでしょうか?
112 :デフォルトの名無しさん2009/07/21(火) 22:40:27
>>107
基本機能を調べもしないで作ってもグチャグチャになるだけだよ
まずはStruts2だけで一通り作ってみたら?
宣言的トランザクション管理やAOP機能が必要ならSpring連携は必須だけど
そういうレベルでもなさそうだし
113 :デフォルトの名無しさん2009/07/21(火) 22:50:36
>>112
確かにそうなんですが、とりあえず Spring というものを使って
みたかったんです。

基本を学ぶのにいいページとかないでしょうか?

色々見て回ってるんですが、どうも全体像がうまく掴める様な
サイトがないんですよね…。

何となく話を聞いていると Spring って DI じゃなくて結局
トランザクションとか AOP とか DI 以外の何かが便利なん
ですかねぇ。よく分からなくなってきました。

まぁ大した大きさのプロジェクトじゃないのでグチャっても
何とかまとめあげる事はできると思うので続行します…。
108 :デフォルトの名無しさん2009/07/21(火) 22:34:18
@Resourceとか@Serviceとかうまく使えばXMLはほとんどいじる必要ないし、
型がしっかりとか意味不明だし。
111 :デフォルトの名無しさん2009/07/21(火) 22:39:41
すいません
「Developing a Spring Framework MVC application step-by-step」
ってやつをざーっとしか呼んでないです。

見直してみます。
115 :デフォルトの名無しさん2009/07/22(水) 00:15:49
あはは(笑)

大丈夫ですよ。Spring を活かし切れなくても要件は確保できる自信は
あります。

つか、マジで色々調べてるんですがセッションの内容を DI する仕組み
が見つかりません…。そういう事できないんでしょうか?
116 :デフォルトの名無しさん2009/07/22(水) 00:20:05
sessionスコープでBean定義すればよろし。
117 :デフォルトの名無しさん2009/07/22(水) 00:26:49
>>116
すみません、もしかしたら同じ事を言っているのかもしれませんが、
Struts の Action だと、request のパラメータは自動的に DI される
と思うのですが、Session の内容は SessionAware にしないと DI され
ないですよね。

それを、Action オブジェクトを Spring 経由で生成する様にした時に
自動的にセッションの内容も DI してくれる様にしたいのですが、
そういう事でしょうか?

session で bean を定義しても、getBean とかで取ってこないといけ
ない訳ですよね?それって Injection になっていない気がするん
ですが、どうなんでしょう…?
118 :デフォルトの名無しさん2009/07/22(水) 00:30:05
DIすりゃいいだろJK
119 :デフォルトの名無しさん2009/07/22(水) 00:51:01
>>118
あ、session スコープで定義した bean 自体を DI する、と!!
おおぉ!そういう事ですよね?

何となく分かった気がします!やってみます。
すいません本当に初めてでよく分かってなくて…。ありがとうございます。

これってよく使われる手法なんですか?
120 :デフォルトの名無しさん2009/07/24(金) 11:02:29
DI にそった形で作ろうとすると、色々考えなきゃいけなくて結局
DI じゃない形で作るより時間かかりますねぇ。

再利用できないコンポーネントなんか意味ないし、かといって
再利用できる様に設計しながら作るとコード量がガンガン増える…。

どっちがいいんだか分からなくなってきました。
一発目は辛いけど二発目からは楽になるんでしょうか。
121 :デフォルトの名無しさん2009/07/24(金) 12:54:02

> 再利用できる様に設計しながら作るとコード量がガンガン増える…。

え?何言ってるの?
再利用した分で充分に元は取れるだろ
122 :デフォルトの名無しさん2009/07/24(金) 13:18:29
>>121
例えば、ログインのロジックなんかはそのプロジェクト一回でしか使えない
ですよね。似た様なロジックがその後別のプロジェクトで使えれば、
そこで元は取れると思いますが、単発のプロジェクトで考えた時には
単純にコード量が増えているだけと捉えられませんか?

もちろん、そんなコンポーネントだけではないと思いますが。
124 :デフォルトの名無しさん2009/07/24(金) 14:55:25
>>122
例が極端すぎる。そんなのあたりまえだ。

再利用が見込めるところだけを再利用可能なコンポーネントとして設計する。
それがきちんと見極めるのが良い設計者だ。
125 :デフォルトの名無しさん2009/07/24(金) 20:49:32
>>122
・何事もやりすぎはよくない
・できるだけシンプルに考える

これだけでも意識していればいいと思う
123 :デフォルトの名無しさん2009/07/24(金) 13:46:07
再利用と言っても、同一アプリ内のスコープでしか考えないことにしている。
他のプロジェクトでの再利用はあまり現実的ではない。
DIはモックテストがやりやすい点が便利って程度。
慣れれば設計が大変とは思わないけどねー
126 :デフォルトの名無しさん2009/07/24(金) 23:21:39
>>123, 124, 125
レスありがとうございます。

逆に、注入する依存性を変化させるだけで再利用できるコンポーネント
ってどんなのがあるんでしょうねぇ?

ちょっと自分には想像できませんでした。
みなさんの実際にやったプロジェクトではどのようなものがありました??
127 :デフォルトの名無しさん2009/07/25(土) 03:39:52
>DI にそった形で作ろうとすると、色々考えなきゃいけなくて結局
>DI じゃない形で作るより時間かかりますねぇ。
DIで沿った形で作ろうとしてる時点でたぶんもうダメなんじゃないかな。
インターフェースだけきっちり決めて、さくさく作ろうとする時に、
モジュール間をくっつける手段としてDIコンテナ使うだけの話だよ。

普段どういうスタイルで作ってるのよ。
130 :デフォルトの名無しさん2009/07/25(土) 14:16:07
>>127-129
読んでて納得しました。

確かに、差し替えを容易にするって言うのが、メインの考え方かもしれない
ですね。

でもそう考えると Interface で定義して組み立てていくのと何が違うのか…?
という部分でちょっと謎が残るんですが…。

applicationContext.xml さえ再読み込みさせれば Tomcat を再起動しなくて
済むとかそういうメリットでしょうか?(そういう事ができるのかは知りませんが)
134 :デフォルトの名無しさん2009/07/26(日) 15:36:04
>>130

たとえinterfaceをちゃんと既定してても、自分でnewしてたら無意味。
だから昔はみんなファクトリクラスをがしがし作っていたんだけど、
DIコンテナが台頭してきたから、車輪の再発明をやめて
それを使うようになったってだけ。
128 :デフォルトの名無しさん2009/07/25(土) 05:21:43
DIって再利用が主眼なのか? 差し替えを容易にすることで、テスタビリティや拡張性を向上させるのが主な目的と思ってたんだけど。
129 :デフォルトの名無しさん2009/07/25(土) 12:54:22
>>128
そうそう。

例えば、JDBCやORMapperとか扱う時も、そうだしね。

Spring Frameworkって言っても、どちらかというとframeworkじゃなくて
ミドルウェアみたいな気がする。
131 :デフォルトの名無しさん2009/07/25(土) 16:45:13
Factoryパターンの発展系やオブジェクトプーリングの側面もあるような気が
132 :デフォルトの名無しさん2009/07/25(土) 18:43:48
自分的には、DIコンテナはAOPを導入する為に使ってる感が強いな
133 :デフォルトの名無しさん2009/07/25(土) 19:52:04
>でもそう考えると Interface で定義して組み立てていくのと何が違うのか…?
違わないよ。

今まではベタ書きで組み立てしてたけど、
それをコンテナの仕事にしたってだけの話。

結果として依存性がコードから追い出されたから、
組合せの自由度が増すようになったし、
コンテナの機能でアスペクトを織り込んだり出来るようになった。
135 :デフォルトの名無しさん2009/07/28(火) 04:27:52
バーチャルモックが出てきてぶっちゃけテスタビリティとかどうでも良くなってきててるよな。
139 :デフォルトの名無しさん2009/08/12(水) 14:17:22
VMwareに買われたな。正直、意味がわからん。

VMwareは何がしたいんだ…?
141 :デフォルトの名無しさん2009/08/17(月) 11:30:41
>>139
まじ??
ソース、あるいはニュースサイトの記事のURLきぼんぬ
142 :1412009/08/17(月) 11:33:22
すまん、Guice スレで以下を見つけた

395 名前:デフォルトの名無しさん 投稿日:2009/08/11(火) 21:31:33
SpringSourceが買収されたな
http://journal.mycom.co.jp/news/2009/08/11/015/index.html
144 :デフォルトの名無しさん2009/08/23(日) 08:23:25
リッチクライアントを使った先物取引業務システムを構築
http://itpro.nikkeibp.co.jp/article/JIREI/20090811/335517/
>開発言語はJava,フレームワークはSpring Framework2.5,DBMSはOracle 10gを使用。リッチクライアントのツールには,日本ネクサウェブのNexawebを採用した。

Springって実は結構使われてんだな・・・
146 :デフォルトの名無しさん2009/09/28(月) 10:25:49
SpringMVC でサイトを構築しているのですが、commandClass でコマンドのクラス名
を指定すると思いますが、こいつに DI するにはどうしたらいいのでしょうか?

コマンドクラスに DI できないと非常に不便なので何か方法がないかと探している
のですが、どうもできなくて…。

よろしくお願いします。
147 :デフォルトの名無しさん2009/09/28(月) 11:21:52
すみません。

AbstractCommandController を継承して getCommand をオーバーライドした
クラスを作成する事で対応できました。

お騒がせしました。
148 :デフォルトの名無しさん2009/10/01(木) 04:39:10
SpringMVCはサンプルプログラムもっと増やして欲しいねえ。
Controllerクラスの解説が希薄に感じる。
149 :デフォルトの名無しさん2009/11/22(日) 12:53:15
情報も勢いも少なすぎじゃない?
一通り思いつくの用意したから後は自分で調べろスタンスなの?
150 :デフォルトの名無しさん2009/11/29(日) 02:03:33
日本で使いたければそうするっきゃないね。
なんでこうも流行らないのかな、国内だと。
151 :デフォルトの名無しさん2009/11/29(日) 09:00:56
日本のプログラマーの多くは上司に進言できる立場にいないから。
または上司がそういったことに興味がないから。
152 :デフォルトの名無しさん2009/11/29(日) 17:17:53
久々にJavaの仕事に入ったら、未だにオレオレ基盤クラスを継承させてトランザクション管理とかやっていて
軽く眩暈がしたw
なんか数年前から状況は変わってないな。使わないところはいつまでも使わない
153 :デフォルトの名無しさん2009/11/29(日) 18:10:14
使える人間がいなければ使えない。
そして使えるようになるという努力を怠って停滞している。
それだけだと思う。
156 :デフォルトの名無しさん2009/12/01(火) 19:12:29
上流、下流なんて言ってる時点で日本のプログラマーは死んでるよ
157 :デフォルトの名無しさん2009/12/01(火) 20:10:04
>>156
概ね同意。
158 :デフォルトの名無しさん2009/12/01(火) 20:18:05
海外も日本みたいに腐った階層構造なのかな?
159 :デフォルトの名無しさん2009/12/02(水) 21:11:00
>>158
どこだっていつだって蟹工船 (笑
160 :デフォルトの名無しさん2009/12/02(水) 23:59:24
階層構造は別に腐っててもいいんだよ。
ただ、死ぬまでしおらしく過労させられるのは日本だけ!
165 :デフォルトの名無しさん2009/12/19(土) 00:08:58
だって価値ないもんww
166 :デフォルトの名無しさん2009/12/19(土) 02:53:14
>>165
ぷぷっww
169 :デフォルトの名無しさん2010/02/04(木) 18:24:58
たぶん俺とお前ともう一人くらいしかこのスレ見てないと思う
173 :デフォルトの名無しさん2010/02/04(木) 23:08:07
色々見ててここもウォッチしてるけど、guice同様あと一歩踏み込めない
174 :デフォルトの名無しさん2010/02/05(金) 01:03:19
とりあえず2人よりは多く見てるようだな。

1.2で基本は完成して、2.0で設定ファイル周りが綺麗になって、
以降は蛇足と言うかなんと言うか。
(アノテーション、マジ消えて欲しい。)

3.0 でうれしかったのって O/X Mapper が
spring-ws から本体に移籍した点くらいしか・・
175 :デフォルトの名無しさん2010/02/05(金) 01:06:50
アンチアノテーションか。珍しいな。
おれはアノテーションがガンガン使われるようになってきてうれしくなってきたくち。

SpringMVCもなかなか良く出来てるし。
Seasar系に近づいただけといわれれば、そういうところもあるけれど。
176 :デフォルトの名無しさん2010/02/07(日) 16:23:34
Spring ROO ってなんなのよ?

3.0 になって出てきた、よくわからんプロダクトを説明したサイトないですか?

あと、2.0 の時に作ったプログラム、XML ファイルは、jar を 2.5 にしても
動作していましたが、2.5 の時に作ったプログラム等は、jar を 3.0 にしても動くの?
184 :デフォルトの名無しさん2010/04/24(土) 14:27:28
亀レスだけど、おいらもSpringに関してはアンチアノテーションだな。
スキーマの設定が正常かって確認している?

自分はアノテーションだとトランザクションが特定のクラスだけかかっていないとか、
どこで異常が発生しているのかが把握しにくいから、
設定ファイルに戻して、Spring設定ファイル検証ツールを使って確認をしている。
何かいい方法があるなら教えて欲しい。
185 :デフォルトの名無しさん2010/05/03(月) 14:39:05
@Transactional だけはよくつかうが、
セッターインジェクションする Service の指定だっけ? は使わず、XML で指定する派。
191 :デフォルトの名無しさん2010/05/05(水) 13:27:36
?(゜□゜;
てかSpring関係ねええええ。どうしてこうなった・・・Rooのせいか
192 :デフォルトの名無しさん2010/05/05(水) 14:47:43
そういやth2の18禁版予約して買ったのにいまだやってねーな…
196 :デフォルトの名無しさん2010/06/13(日) 14:19:43
るーるー るるるるるーーーーーー

るーるー るるるるるーーーーーー

ああああーーーーーー んんんんんーーーーーー
198 :デフォルトの名無しさん2010/06/13(日) 23:34:22
クラス作ったりインターフェース作ったりフィールド増やしたりできるよ









エディタでやるっつーの
199 :デフォルトの名無しさん2010/06/14(月) 03:02:53
>197
できる
>198
分からないは黙ってろ
200 :デフォルトの名無しさん2010/06/14(月) 03:15:36
>>199
日本語分からないなら黙ってろよ

> 出来るだけ?
> できる

どんな会話だよw
209 :デフォルトの名無しさん2010/06/24(木) 12:41:55
>207
やだ。
えくりぷすぷらぐいんじゃなきゃやだ。
なんで独自IDEなんかにしてプラグイン単体提供やめたの?馬鹿なの?
212 :デフォルトの名無しさん2010/07/04(日) 08:47:46
WEBアプリで、Bean に ServletContext を DI するにはどうすればよいのでしょう?

そんなものをDIするのは間違ってる?
214 :デフォルトの名無しさん2010/07/04(日) 17:13:49
やりたいのは、ServletContext.getRealPath() で得られるパスを Bean に教えてあげたいってことなんす。
218 :デフォルトの名無しさん2010/08/01(日) 20:01:51
springってバージョン何が一般的に使われていますか?
あと、プレゼンテーション層はSpring MVCがよく使われますか?
221 :デフォルトの名無しさん2010/08/01(日) 23:36:20
MVC運子なのか。
やっぱstruts2ですかね。

Rooは、aspect専用のファイルが作られるのが、
なんか好きになれない。。
226 :デフォルトの名無しさん2010/08/28(土) 23:05:37
@Transactionalでトランザクション管理するときに、RDB内に置かない外部のリソースも
含めてトランザクション管理することは可能?
例えば、ユーザにファイルをうpさせた時に、メタデータはRDBに置いてファイル自体は
ファイルシステムに格納するとして、両者を一単位としてトランザクションを設定したいんだけど。
227 :デフォルトの名無しさん2010/08/29(日) 00:16:14
XAに対応したトランザクショナルなファイルシステムがあれば可能
聞いたことないけど
228 :デフォルトの名無しさん2010/08/29(日) 00:42:31
>>227
orz

なんか、SpringのTransactionManagerがrollbackを呼び出す時に、
それをフックしたりできないもんだろうか。
要するに、カスタムのトランザクションを定義できないかということなんだけど。
229 :デフォルトの名無しさん2010/08/29(日) 01:13:57
>>228
その程度でいいならTransactionSynchronizationの実装クラスを作ればおk
230 :デフォルトの名無しさん2010/08/29(日) 01:23:23
>>229
なるほど、調べてみる。サンクス。
231 :デフォルトの名無しさん2010/10/21(木) 13:43:30
多少スレ違いかも知れないが、ネタふりにならないネタふり。

Apache、JSR 299とJSR 300のオープン実装「OpenWebBeans」正式版をリリース
http://sourceforge.jp/magazine/10/10/21/0412230

WebBeans って JBoss が推進していたやつだよね?
こんなのがいまさら出てきたところで、結局は DI は Spring を使うような気がする。

というか Java での開発自身が、ほとんど話題にならないような。
233 :デフォルトの名無しさん2010/12/07(火) 23:11:56
DIとか依存性とかそういうことちゃんと理解できてる人が少ないよね
そもそもテストクラスをかかずに動かしてみてテストするレベルのテストしか
実施しないようなところだと、たいした恩恵ないもんね(´・ω・`)
234 :デフォルトの名無しさん2010/12/08(水) 12:54:13
>>233
ん?お前が理解してなくね?
235 :MINTIA2010/12/12(日) 03:33:36
Spring3 日本語ドキュメント、もしくは日本語の書籍キボンヌ。。
240 :デフォルトの名無しさん2010/12/19(日) 14:33:49
選べる立場に居てS2選ぶやつはいねーよ
241 :デフォルトの名無しさん2010/12/19(日) 18:27:59
>>240
どういういみ?
Springよりも、断然S2じゃないの?
243 :デフォルトの名無しさん2010/12/19(日) 20:26:10
Springってバージョンなにがおすすめ?

あと、プレゼンテーションは何を使えばいい?

ほんで、DB層は名に使えばいい?
244 :デフォルトの名無しさん2010/12/19(日) 21:58:40
バージョンはよほどの理由がない限り最新版がお勧め。

プレゼンテーション層は俺なら SpirngMVC + Velocity にするけど
Struts + JSP でも別にかまわん。

DAO層はJDBC抽象が強力なので俺なら自前のヘルパーと組み合わせるが
HibernateでもiBATISでもより要件に合うものを選べばい良い。

Springはただの糊だから使いたいものを組み合わせたらいい。
6年前から一貫してそういう姿勢だ。
Kuina押して捨てられたりTeeda捨てて無かったことにされたり
そういう心配はする必要がない。
その代わり部品選択した責任はお前が持て。
246 :デフォルトの名無しさん2010/12/20(月) 22:46:17
>>244
どうりで日本じゃSeasarの方が人気あるわけだ
248 :デフォルトの名無しさん2010/12/21(火) 11:10:42
他を落とすしか自分がいいと思ってる物を持ち上げられない奴って多くなったよね、ここ数年
249 :デフォルトの名無しさん2011/01/04(火) 01:03:33
分散トランザクション使ったことないんですけど
以下の1ではなく2の状況が使われる理由に多い、で合ってますか?

1.複数のデータベースサーバーにコミットするとき。
2.DBは1だとしてもトランザクションのセーブとロールバックが複雑になるとき。
251 :デフォルトの名無しさん2011/01/04(火) 02:45:09
じゃあ「REQUIRES_NEW」とか「NOT_SUPPORTED」の属性で
トランザクションを区切るのは、データベース鯖が1つのときだと
恩恵がないですか?
252 :デフォルトの名無しさん2011/01/04(火) 10:03:14
分散トランザクションと宣言的トランザクションは別物じゃヴォケ
253 :デフォルトの名無しさん2011/01/04(火) 11:39:34
宣言的トランザクションていうのか

JTAの解説で2フェーズコミットと一緒に紹介されてるから勘違いしてたよ
さんくす
256 :OSGi > start 12011/01/16(日) 22:37:20
OSGiについて語るスレです。OSGiサービスプラットフォームとは、Java言語に
基づいたオープンなソフトウエア部品化技術です。

標準化団体
OSGi Alliance - http://www.osgi.org/

OSGiフレームワークの実装
Apache Felix - http://felix.apache.org/
Eclipse Equinox - http://www.eclipse.org/equinox/
Knoplerfish - http://www.knopflerfish.org/
Spring Dynamic Modules for OSGi - http://www.springsource.org/osgi
Concierge - http://concierge.sourceforge.net/
Oscar - http://forge.ow2.org/projects/oscar/
258 :デフォルトの名無しさん2011/01/21(金) 22:24:26
Local変数のDIって需要あるのかな

Local変数のアノテーションに何とかさわれそうなんだけど
使い道あるかなと思って
268 :デフォルトの名無しさん2011/01/23(日) 16:27:16
そもそも>>258が目的もなく「アノテーションにさわれるから」という手段から思いついた程度の話だからなあ
まぁこんなとこでつべこべ書いてないでさっさと実装して公開しろってこった
いいものなら使われるしくだらなければ見向きもされないだけのこと
259 :デフォルトの名無しさん2011/01/22(土) 10:38:11
メソッドの引数で渡さずに外部からローカル変数に値をセットしたいってこと?
261 :デフォルトの名無しさん2011/01/22(土) 15:41:14
ローカル変数のアノテーションに触れてもローカル変数自体に触れなくね?
262 :デフォルトの名無しさん2011/01/22(土) 19:16:34
asmとかjavassistでメソッドをクラスに書き換えるようなことをして
ローカル変数をフィールド扱いしちゃえばできそうじゃない?
264 :デフォルトの名無しさん2011/01/22(土) 23:46:45
ローカル変数にDIして何かいいことある?
269 :デフォルトの名無しさん2011/01/26(水) 01:32:19
>>264
ローカル変数ではないけど、そのクラスしか使わないような
プロパティファイルに定義するようなことを、Spring の XML にしてDI してみたことはある。

ShouhizeiCalculator {
 public void setShouhizei(Integer tax) {
  ・・・・
 }

んで、XML にみたいな感じで。

<bean id="shouhizeiCalculator" class="jp......ShouhizeiCalculator">
 <property name="shouhiZei" value="3">
</bean>

まぁいちおう設定値を外出ししているけど、実際には <util:properties> 使って
結局プロパティファイルに外出ししちゃうかな。
267 :デフォルトの名無しさん2011/01/23(日) 13:08:08
肯定しても否定しても
その理由がないものは
見てみぬふりをするからよろしく
270 :デフォルトの名無しさん2011/01/27(木) 15:58:54
DIはFactoryの一種にすぎん
272 :デフォルトの名無しさん2011/01/28(金) 02:30:28
>>271
それじゃ>>270のわかってなさ加減が再現できとらん
271 :デフォルトの名無しさん2011/01/28(金) 01:44:30
foreachはループの一種にすぎん
275 :デフォルトの名無しさん2011/01/30(日) 10:07:45
内部フィールドにあらかじめ値がセットされた状態のオブジェクトをポコポコ作ってくれるという意味かな
276 :デフォルトの名無しさん2011/01/30(日) 22:05:21
Factoryクラスが乱立しない、
Factory、Singleton、Builderなどを意識させない、
あとは嫌なJNDIの臭みを消す……みたいな?

Guiceを触って遊んだぐらいだけどこんな感想。
277 :デフォルトの名無しさん2011/02/08(火) 16:09:21
@Autowired
void hoge(DataSource ds, User user...)

引数にDIしてくれるらしいんだけど、
このメソッドはどうやって呼び出せばいいの?
280 :デフォルトの名無しさん2011/02/08(火) 22:38:02
まじか今アノテーションでやるの?

みんなSpringってどこで情報仕入れているの?
283 :デフォルトの名無しさん2011/02/10(木) 18:24:53
おれはアノテーションでコードがごてごてになるほうがいやなんだけど、
こういうのって少数派なの?
285 :デフォルトの名無しさん2011/02/10(木) 22:23:33
>>283
アノテーションは基本的に関数の頭につけるだけだから
コードがごてごてになることはない。
意味のあるコメントと思えばいい。

そういう感想を抱くということは、
お前はアノテーションをわかってないか、
お前の書くコードに問題がある。
291 :デフォルトの名無しさん2011/02/23(水) 19:14:39.49
>>283
XML地獄がいいなんてのは確実に少数派だろ。

個人的には変なDIかける為にXML地獄に落ちたり、
アノテーションの山になって記載ミス起こす位ならもうファクトリーでいいじゃんって気もしてるがw
284 :デフォルトの名無しさん2011/02/10(木) 19:26:11
一律になんでもアノテーションだから良い悪いって言うなよ。
用途によっても違うし、アノテーションシンドロームと宣言指向プログラミングは別に語るものだと思うけど。
286 :デフォルトの名無しさん2011/02/18(金) 05:50:42
spring roo 重そう
288 :デフォルトの名無しさん2011/02/20(日) 14:16:06.63
>>286
何だと思ってるんだよw
287 :デフォルトの名無しさん2011/02/18(金) 08:42:11
重くないよ。つーか日本語のドキュメントでも3分も読めばそんなレスしないと思うが。
289 :デフォルトの名無しさん2011/02/21(月) 03:04:31.29
IDEが重いって意味じゃない?

Railsが人気の理由ってソースや各種設定ファイルのジェネレータだと
思うけどrooはどうなるかな
290 :デフォルトの名無しさん2011/02/21(月) 22:10:47.08
そんな原始的なものに頼らない・・・・つーかそれもドキュメントを3分でも(ry
292 :デフォルトの名無しさん2011/03/06(日) 14:08:39.81
アノテーション地獄や規約地獄に落ちるくらいなら
XML読むだけで済むならそっちの方がいい。
295 :デフォルトの名無しさん2011/03/06(日) 17:51:48.21
あまりユニットテストが書きやすくなったような気がしない。
1つのメソッドをテストするだけでも数百あるクラスが結合されるからテスト効率が異様に悪い。
関係ないクラスで DI エラー起こすとテストできない。なぜ POJO なのに他クラスが影響するのか。
しかも JUnit なりの上にフレームワークまるごと乗せないとテスト起動すらできないし。

というか Spring の使い方が誤ってるって話だけど。
296 :デフォルトの名無しさん2011/03/06(日) 19:00:52.31
まさかmockを作らずにユニットテストしてるんじゃないよね?
299 :デフォルトの名無しさん2011/03/06(日) 21:29:53.28
>>296
理由は大きく3つ。総じてうちのプロジェクトが馬鹿だという話だけど。

1.コンポーネントの粒度が細かすぎる。曰く 「new が無いほうが良い」 らしい。
2.大量のモックを作らねばならず、モック自体の品質が問われた結果、モックの作成が禁止された。
3.設定も併せてテストするという方針(笑)により、設定ファイルの切り替えが認められなかった。
301 :デフォルトの名無しさん2011/03/06(日) 22:04:26.35
>>299
それはもうSpring止めた方が断然まともに開発できる気がするぞw
FW導入する際に、何の為に使うのかをまず意識合わせしないとな・・・
302 :2992011/03/06(日) 22:42:22.83
>>301
まあそれ以前に、java に触ったことがない奴が全体の2割くらい居たんだけどね。
ほんと SIer は地獄だぜ。
305 :デフォルトの名無しさん2011/03/07(月) 13:09:02.58
>>299, 304
そんな糞な設計をする会社と言うと、、、、、、おっと、○×△を馬鹿にするのはそれまでだ。
297 :デフォルトの名無しさん2011/03/06(日) 20:37:06.40
interface 定義して仕様と実装を意識した記述が出来て
見通しがすっきりするのが一番の効能な気がする。

ので、実装クラスそのまま呼べます、素敵!
みたいなのを売りにしてる DI コンテナは
なんか間違ってる気がして好きになれない。
そういう事が出来てもいいけど、それを売りにされるとなんか違う。
だったら LL でいいじゃんと思う。
298 :デフォルトの名無しさん2011/03/06(日) 21:01:12.90
> 実装クラスそのまま呼べます、素敵!

EJB3.1のことか
304 :デフォルトの名無しさん2011/03/07(月) 08:10:58.13
なんでもかんでもDIで注入しようとしちゃったんだね・・・
310 :デフォルトの名無しさん2011/03/19(土) 14:02:58.74
特別損益が注入されました
ストラテジー・社員パージです
311 :デフォルトの名無しさん2011/05/14(土) 11:10:26.85
List内のオブジェクトをそれぞれ入力チェックしたいんだけど、
Spring3のSpringMVCって、StrutsのindexedListPropertyみたいな機能ある?
313 :デフォルトの名無しさん2011/06/19(日) 22:00:56.66
"ORM が危険なアンチパターンだっていうのはどれだけ言っても言い過ぎることはない"
http://tech.a-listers.jp/2011/06/16/orm_is_an_antipattern/

・ORMはSQLベースのモデルよりも最初のうちはシンプルで理解しやすく、手早く書く事ができる。
・効率はどんなプロジェクトでも最初の頃は十分。
・不幸にもそれらのアドバンテージはプロジェクトが大きく複雑になると消失し、
 抽象化は破綻し、開発者はSQLを使わなければならなくなる。
・ORMの抽象化はほぼ100%のプロジェクトで破綻する。
・オブジェクトはリレーショナルなクエリの結果を表現するのには不適切。
・不適切にクエリをオブジェクトにマッピングすることによって、ORMを廃止しない限り
 簡単には修正できない非効率性がアプリケーションのあちこちにばらまかれる
・オブジェクト指向設計はリレーショナルなデータを効率的に表現できない。
 これはORMが解決できないオブジェクト指向デザインの根本的な制限だ。
314 :デフォルトの名無しさん2011/09/24(土) 12:02:17.76
プロジェクトの規模がデカイ場合
全員にSQLまで書ける権限あたえると100%破綻する法則

というわけでウチの場合はDBに直接触るコーディングを書く権限(?)は
1〜3人に制限しとる
316 :デフォルトの名無しさん2011/09/30(金) 01:40:47.12
Spring Frameworkのソースってどこ? ここにはコアのコードらしき
ものは見当たらないのだが。

https://github.com/SpringSource
317 :デフォルトの名無しさん2011/10/01(土) 00:22:26.61
リリースされてるzipの中にソースのjarがあるよ
318 :3162011/10/01(土) 05:23:06.94
>>317
あ、あった。 ありがとうございます。
324 :デフォルトの名無しさん2011/10/05(水) 21:40:17.20
Formから送られてきたデータに対して
ValidatorやConvertorを用いるのは
MVCのMであるべきですよね?
325 :デフォルトの名無しさん2011/10/06(木) 22:58:16.21
>>324
Mにも色々あるしMに持たすのはどうかと思うよ
326 :デフォルトの名無しさん2011/10/07(金) 20:55:32.38
>>325
Controllerはvalidationもページ遷移もしないほうがいいと思うんです。

ユニットテストのモックが作りづらいHttpServletRequestなどの無害化
(必要なデータをValueObjectに詰め直すとか)だけに留めないと
条件分岐とかが入ってきて、簡単なロジックなら一緒に書いてしまいたく
なりますし・・・。
327 :デフォルトの名無しさん2011/10/08(土) 09:52:59.79
>>326
ページ遷移、というかURLについての詳細をコントローラに書くと
折角RequestMappingやらControllerClassNameHandlerMappingで
コントローラから実URLへの依存を薄くしたのが意味なくなるわな

ってもそうしたら、LocationヘッダーとかでURLをふっとばす時に
どこで管理するか微妙になるけど…


最近の悩みControllerClassNameHandlerMappingがうまくいかないので
@RequestMapping(ほんじゃら)を@Targetといっしょに宣言しとる

ControllerClassNameHandlerMappingとか@RequestMapping("/hoge")で
うまくコントローラのメソッドが呼び出せない場合ってトレースできる手段ないかしらん…
328 :デフォルトの名無しさん2011/10/08(土) 10:11:21.18
ついでにEclipseを使ってSpringMVC3.0のプロジェクトを作ったときの参考URL
ttp://www.myhomepageindia.com/index.php/2009/12/29/spring-mvc-3-0-tutorial.html

どうでもいいけどjar地獄だな、Marvenとm2eの勉強する時間ないけど…
331 :デフォルトの名無しさん2011/10/10(月) 01:09:26.37
>>328
Spring 2.5 を触った後はSpringから離れていたんだけど、
SpringMVC 3.0 というのは、Spring 3.0 と同時に使うの?

Spring 3.0 になって Roo とか出てきて、
なんかごてごてして興味なくなってしまったんだけど(Spring 2.5 ぐらいでちょうどよかった)
Spring MVC 3.0 は、Spring 2.5 についてきた Spring MVCとどこか違うのでしょうか?
333 :デフォルトの名無しさん2011/10/10(月) 11:17:39.77
>>331
2.5の知識があれば普通に3.0のmvcも動くので大してかわってない としか答えようがない
ただパッケージ構成がかわってるから、まんまじゃ動かないとかそんくらいか

>>328は3.0版だが
同じとこにの2.x版もあるので比べてみたら
329 :デフォルトの名無しさん2011/10/08(土) 10:41:55.52
Mavenのjar地獄を見てるとかつてのXML地獄を思い出す
330 :デフォルトの名無しさん2011/10/09(日) 10:59:15.27
>>329
Cプログラムのライブリラ依存地獄と比べればまだ進化してるんじゃないかと

依存関係jarをMavenで取得するより
自分で探してきてつっこんだほうがはやいのはなぜか…
334 :デフォルトの名無しさん2011/10/10(月) 11:19:05.84
ついでに、SpringMVC使うより
Sease+Strutsのほうが枯れててラク、日本語の情報もたくさん、あと安い技術者集めやすい
335 :デフォルトの名無しさん2011/10/11(火) 12:54:27.59
seaser3頓挫で終了
336 :デフォルトの名無しさん2011/10/12(水) 01:58:37.59
>>335
企業ユースだと今が旬だったりするらしい

増員のために経歴書集めてる営業さんにみしてもらったら
ここ1,2年でSeasar2経験書いてるひとが大半。 …イチから環境構築できるのは一握りらしいけど

話はかわるが、SpringMVC+Hibernateで
hibernate.cfg.xmlを無くしてhoge-servlet.xmlに一本化するサンプルどっかにないもんかね

色々ためしてるんだが
org.springframework.orm.hibernate3.LocalSessionFactoryBean
のbean定義のとこでマッピングがうまくいかんですたい。
337 :デフォルトの名無しさん2011/10/17(月) 20:28:25.26


> ここ1,2年でSeasar2経験書いてるひとが大半。 


そういう奴等は
案件にPGとして関わって、ただ決められたルールで使える
程度の奴等だろ

338 :デフォルトの名無しさん2011/10/18(火) 12:15:11.83
確かにSpringとかSeasarは
利用経験のみなのか構築経験アリなのかで大きくちがうな

前者の特徴は「前のとこならこうできたのに…」と文句ばかりで五月蝿いが
じゃあその設定よろしく、というと「わかりません」とか「気のせいだった」とか

あとSpringでアノテーション使いまくるとエラー出たときに原因がわからづれ
特に@RunWith(SpringJUnit4ClassRunner.class)
StackOverFlowみたいな英サイトに全く同じエラー文言なのに解決法が全く違うとか多すぎてわろた

おまけ: StackOverFlowの大半が親切すきて
日本人て駄目部族だなぁとおもた。(俺も含む)
339 :デフォルトの名無しさん2011/10/18(火) 14:08:37.89
Stack over flowのコード貼り付け機能は便利だね
てよりSpringにぴったりだ

エラーコード全部とJavaコードとXMLがないと診断できん
340 :デフォルトの名無しさん2011/10/18(火) 14:11:41.53
> あとSpringでアノテーション使いまくるとエラー出たときに原因がわからづれ
> 特に@RunWith(SpringJUnit4ClassRunner.class)
> StackOverFlowみたいな英サイトに全く同じエラー文言なのに解決法が全く違うとか多すぎてわろた

それって
お前がspringのコアの挙動を理解してないだけだろw

アノテーション情報から、どのように依存関係やaopが実現されるか
コードベースでで理解が出来てれば
原因究明なんて一瞬だろ


おまえも「利用経験のみ」の奴と変わらんよw
「設定ファイルを使ったことがあります、キリッ」って面接で言うんだろ?w
341 :デフォルトの名無しさん2011/10/18(火) 14:29:04.02
>>340
本気でいってるならヤバいな
そんなんなら本家のコミュニティとかでコード貼り付け祭りになってる理由を教えてくれ

ていうかエラーしか張らない奴がいると "全部張れ" が常套句になってるのがワロス
342 :デフォルトの名無しさん2011/10/18(火) 14:48:27.65
神が光臨してるようなので質問させてください
application.xmlにannotation-drivenを追加したらエラーが出たんですが
(そのままコメントアウトするとトランザクションが働かないけど普通に動きます)
>>340さんなら原因わかりますよね
345 :デフォルトの名無しさん2011/10/18(火) 14:56:17.97
>>342
『設定ファイルを記述間違えたらエラーが出るんですけど・・・><』

って質問メール送ってごらんww
初心者クンw
348 :デフォルトの名無しさん2011/10/18(火) 15:09:06.84
>>340
3.0ベースで後でリファレンスに使えるような本のオススメあったらおしえて
英書でもいいよん
349 :デフォルトの名無しさん2011/10/18(火) 18:02:20.58
>>348
普通にAPI見て開発できないレベルなら
触らないほうが良いぞw


それか単なる案件の土方PGなら、技術系リーダーに教えてもらえ
350 :デフォルトの名無しさん2011/10/18(火) 18:52:52.51
APIって↓のJavadocことだと思うけど
ttp://static.springsource.org/spring/docs/3.0.6.RELEASE/javadoc-api/
これ以外なにも見ずに開発ってすげぇな

>>349神(もう神とよばせてくれ)は
2系から3系に変わったときもAPIだけ全ての違いが把握できちゃうレベルなの?

あとついでに
ttp://stackoverflow.com/
に迷える子羊がたくさんいるから救ってあげてくれ、あんたなら一質問に10秒もかからんだろ
381 :デフォルトの名無しさん2011/10/25(火) 01:26:09.39
>>350
リファレンスが良く出来てるんでだまされたと思って読まれてみてはどうかと。
API の Javadoc が(特に interface は)丁寧に書いてあるので、それで補完。
あとは困った語句でググれば大抵どうにかなると思います。
Spring 自体は 1.1 の時代にコアの考えはもう完成しちゃってるんで、
多少古い文献でもそうそうズレはないと言う感じ。
(昔から使ってるからそう思うだけかも知れない。)

久しぶりに Spring のサブプロダクトのリファレンス見て、
当たり前のように interface が記述してあって
ブレねえなぁさすがspringブレねえと思った。
343 :デフォルトの名無しさん2011/10/18(火) 14:51:56.70
雑魚ばかりだなw
もうちょっとレベル高いのいないのか?

ひょっとしてxmlにファイル追加するしか出来ない雑魚ばかりですか?w
347 :デフォルトの名無しさん2011/10/18(火) 15:08:35.95
つーか自分でフレームワークの設計ぐらいしたことない雑魚ばかりなの?w
エラーで嵌ってる奴って雑魚以外いないんだけどw

仮に、設計者自身が設定ファイルのエラーで嵌ると思うか?w

お前のレベルが低いだけだと気づけよカス
351 :デフォルトの名無しさん2011/10/18(火) 18:59:31.43
Seasarだろうがspring だろうが本質は同じ
コードを解析すれば
コンポーネント管理の実態がわかる

後は仕様の要求に合わせて設定ファイルと利用クラスを実装するだけ
簡単な話だ

本を買わないとわからないようなレベルの時点で技術者としては終わっている
少なくとも客先に提案出来るようなクラスじゃないことは間違いない

つまり、ただの土方PGってコトだなw
352 :デフォルトの名無しさん2011/10/18(火) 19:07:24.25
神はアノテーション派? それともXML派?
355 :デフォルトの名無しさん2011/10/18(火) 19:38:15.39
>>352
> アノテーション派

クラスファイルに設定を記述すると
設定が各クラスに散在することになる
後々、PJ全体の定義が把握しにくくなる
369 :デフォルトの名無しさん2011/10/21(金) 19:18:01.15
>>355
保守メンテが大変そうだ
357 :デフォルトの名無しさん2011/10/18(火) 21:01:50.92
なんでも一律にXMLかアノテーションでやると思っている馬鹿なんているの?
用途によって使い分けなのが当たり前でしょ。
364 :デフォルトの名無しさん2011/10/19(水) 08:32:23.96
>>357
アホ
358 :デフォルトの名無しさん2011/10/18(火) 21:22:24.28
ここは底辺の集まりのようだなw
初歩的なエラーで延々と悩んでる雑魚や
定義を何処に書くかで揉めてるアリのような虫けらとか
PG世界の底辺を垣間見たようだわw
359 :デフォルトの名無しさん2011/10/18(火) 21:57:14.77
360 :デフォルトの名無しさん2011/10/18(火) 23:26:24.93
誰でも使えるように設計されたspring フレームワーク
それの設定ファイルが使えたからって喜んでる馬鹿って何なの?
当たり前だってw

つーか、ここの連中って
自分でDIコンテナ程度は組めるんだろうな?
spring を評価するんなら最低レベルのスキルだぞ
361 :デフォルトの名無しさん2011/10/18(火) 23:32:05.17
自分でDIコンテナの設計ぐらいできないと
spring や他のDIコンテナの評価する資格すらない

草野球のオッサンが、イチローの評価してるようなモンだ
363 :デフォルトの名無しさん2011/10/19(水) 01:08:33.90
そういやSunもうないか…
じゃOracleで、ついでにDBも新しいのつくってきてくれ11gが使いずらくて10から移行できん
366 :デフォルトの名無しさん2011/10/21(金) 05:52:43.97
3.0.6の@Transactionalがうまくいかねぇ
って英語サイト漁ってたら3.1系(まだRCだけど)入れろとか書かれてたんだが
そんなんで動くんだろうか…

自分はチキンなのでバージョンを落とした…
367 :デフォルトの名無しさん2011/10/21(金) 09:34:59.78
>>366
お前、先週あたりから
ずっと悩んでるなw

「@Transactionalがぁ」って何千回言ったら気が済むんだ?w

一生悩んどけw
368 :デフォルトの名無しさん2011/10/21(金) 09:36:09.60
>>366
コードで追っかけることすら出来ない雑魚だな

問題解決能力の無い雑魚はいらん
371 :デフォルトの名無しさん2011/10/23(日) 10:53:00.85
>>366
関係ライブラリが入ってないだけでは
cglibとAOP Allianceとか、あとなにか忘れた

bean定義のアノテーション「だけ」、の話なら
動的に参照するなり、debugレベルのログみるなりで把握できるから
xmlだけの利点にはならんような印象
374 :デフォルトの名無しさん2011/10/24(月) 14:35:08.53
関数オブジェクトほしいな

無名クラスのコンストラクタでやると不細工だからさ
new Hoge() {
..{
....System.out.println("hello");
..}
};

こうしたいわ
new Hoge(){
..System.out.println("hello");
};

375 :デフォルトの名無しさん2011/10/24(月) 22:55:45.99
つーか、昨今のjavaScriptブームみたいなもんで、
おもちゃにこだわり過ぎて本質的なこと
見落とすなよ。別にCOBOL or PL/Iでも
Systemは動くんだからな。別に流行に乗ったところで
儲かるのはひと握りだし。
378 :デフォルトの名無しさん2011/10/24(月) 23:22:12.22
フレームワーク導入すれば
柔軟に対応できると夢みてるようだが
実際はフレームワークの制約に縛られて
やりたいことが実現できないとかザラにある
379 :デフォルトの名無しさん2011/10/24(月) 23:31:00.38
あれ?、フレームワークの話だったのか。
Javaに欲しい言語仕様の話かと思ってた。
めんごめんご(´3`)
382 :デフォルトの名無しさん2011/10/26(水) 01:01:21.64
最近のJava(FW)はstruts2、spring3、seasar2三巨頭で頭打ちな感じで
つまらんな。何かおもろいことないんかい? とりあえずカッサンドラとか
見てっけど、apacheもなんか2番煎じプロジェクトばっかだな。
383 :デフォルトの名無しさん2011/10/29(土) 01:50:00.37
>>382
Web周りの話にのってみるが、Seasar+Strutsに比べると
Struts2, SpringMVCはあんま聞かないけど使われとるのだろうか

RubyでいうSinatraみたいな軽めのフレームワークはJavaだと流行らんのかしらん
385 :デフォルトの名無しさん2011/10/29(土) 15:56:48.93
>>383
Strutsに失望した設計者が

SpringMVCこそ設計者の答えじゃないのか?
387 :デフォルトの名無しさん2011/10/29(土) 22:10:48.26
>>383
日本ではほぼ皆無だが、seasar2はもう先が無いんだろ。
安定志向な劣等日本SIには丁度良いんだろうが。
あと俺は経験上、LLで大規模書くのは賛成せんな。
そこらじゅうに潜在リスクが残るし。

>>385
SpringMVCは1.0時代からあったが、とりあえずstruts系とは
まったく違う流れで嫌われてた印象あるし、3になっても
アノテを使わんかったらなんか生サブレ書いてる感じがする。
388 :デフォルトの名無しさん2011/10/29(土) 22:46:45.88
SpringMVCって流行ってないの?
現場でよく見かける組み合わせは
Struts+spring+hibernateかな?
390 :デフォルトの名無しさん2011/10/30(日) 00:01:34.72
要員募集でチラ見した範囲内なら
ここ2年くらいはJavaでWebだともれなくStrutsだったな

客も上司もわからんうちに詰め込むぐらい強引にブチこんでも
今度は要員がそろわないという難行にブチあたる
391 :デフォルトの名無しさん2011/10/30(日) 00:48:30.40
俺の経験した職場だと Hibernate は一回もない。
iBATIS 使った案件はあったが俺はアサインされなかったのでよう知らん。
SQL って十分に論理的で抽象化されてると思うんだけど
それを隠ぺいしなきゃいけないってどういう状態なの?
392 :デフォルトの名無しさん2011/10/30(日) 01:03:44.24
>>391
根本的な所が間違っている。

SQLが面倒なのは取得したデータを
変数に詰め替える所
393 :デフォルトの名無しさん2011/10/30(日) 01:10:25.88
>>392
それだけが問題なら凄く昔からあって終了してる
DBごとの独自部分が嫌だからSQLごと隠蔽ってんだろ
399 :デフォルトの名無しさん2011/10/30(日) 11:49:26.99
>>393
SQL直書きが一番高速
これが一番ベストの選択だ
394 :デフォルトの名無しさん2011/10/30(日) 02:17:19.93
SQL書くの面倒。
流れるように書きたいので、S2JDBC使う。
397 :デフォルトの名無しさん2011/10/30(日) 09:44:43.39
流れるようなインターフェースは
実装コストにリターンが全く見合ってない、
時間の無駄の典型に思う。

自分では実装しなくて、実装されたものを使う時であっても。
398 :デフォルトの名無しさん2011/10/30(日) 11:48:10.43
>>397
もうちょっと具体的に書けないか?
400 :デフォルトの名無しさん2011/10/30(日) 11:56:31.37
だが、SQLではスケールできない。
サーバーを何台も使うシステムでは
JOINは嫌われる。
406 :デフォルトの名無しさん2011/10/30(日) 13:50:48.80
>>400
意味わからんw

テーブル結合の意味わかってるか?w
普通にSQLで取得した方が負荷もコストも良いのは歴然だ

それをDAOやらJPAやら変てこなFWで取得するから
メモリも余計食うし、FWが生成するSQLも効率が劇悪のパフォーマンス最悪のSQLを吐き出す
諸悪の根源だな
407 :デフォルトの名無しさん2011/10/30(日) 14:07:03.17
>>406
テーブル結合をするには、
その二つのテーブルが同じサーバーにないと
いけないってのは分かる?
408 :デフォルトの名無しさん2011/10/30(日) 14:24:25.67
>>407
えっと、普通フロントになるサーバをクラスタリングする場合
DBはバックエンド側にまわさないか?

どんなHW要件なのか詳しく知りたいぞそれw

>>406
貴公のDaoの定義がよくわからん
413 :デフォルトの名無しさん2011/10/30(日) 15:08:51.14
>>407
クラスタリングされていても
普通に取得できるのはわかるか?
434 :デフォルトの名無しさん2011/10/30(日) 17:15:01.72
たぶん >>408 と >>413 は、 >>407(= >>400?) の真意がわかっていない。

mixi、モバゲーなどの、超大規模 web 2.0 系では、MySQL を数百台並べるけど、
ああいったところは、たとえば日記テーブルとユーザマスタテーブルを別DBサーバにしちゃうんだよ。
(日記DBと、ユーザマスタDBのなかで、さらにクラスタリングする)

だから SQL で join できない。プログラムから、それぞれの DB 用のコネクションを取得して、
それぞれを単発のSQLで実行して取得する。

だから業務系 Java のよくできたフレームワークを使ったソースと比べると、
重複も多いしみにくいけど、彼らはパフォーマンス至上主義であり、これまでの試行錯誤の結果だからしょうがない。

DeNA、GREE、mixi などの開発ブログを追いかけたり、技術系イベントに行くと、こういった話が出てくる。
436 :4342011/10/30(日) 17:52:49.47
まぁたしかに、業務系だったら(アクセス料にもよるけど) >>434 のようなことまでする必要はないかもね。
453 :デフォルトの名無しさん2011/10/30(日) 20:29:41.03


あ、また間違えたwww


しかし >>434 って凄いな〜
別DBだからSQLで問い合わせ出来ないとか自信満々に言ってやがるw
恥ずかしくないのかねぇw

457 :4342011/10/30(日) 22:16:17.07
>>453
DBリンクできるのは知ってるけど、
仮に日記DBにユーザマスタDBのテーブルを接続したとして、
日記DB経由でアクセスするよりも、直接ユーザマスタDBにアクセスしたほうが速いとおもう。
(というか余計な要素が減る)

>>453 に言いたいのは、「できる/できない」を「知っている/知らない」じゃないんだよ。
実際にやってみて、ちゃんと使い物になるかどうかなんだよ。

よく「それ○○でできますよ」っていう人がいるけれど、
実案件で実際にやったことない人が多すぎる。

<ここから>
DBリンクの機能も、別DBにあるテーブルをjoinするよりも、
どちらかというと他システム連携とかの目的で使うことが多いんじゃないの?

たとえば、他システムのインターフェーステーブルだけを、自分のDBにDBリンクしておいて、
データ連携するときだけ、そのテーブルに書き込むとか、あるいはその逆。

※なので、自分はDBリンクを否定しているわけではないよ。
こういった目的でよく使うし。

DBリンク越しにjoinするのはネットワークをまたがるのだから(別DBとやらが、同一サーバにある場合はこの限りではないが)
パフォーマンスも悪いし、joinしたいんだったら同じDBに乗せるべきだと思う。
</ここまで>

<ここから>〜<ここまで> のところは、自分が経験してきたプロジェクトが
そういうポリシーだったのが多かったのでこのような考え方をしているが、
もしDBリンクについて別の活用例があるのならごめんなさい。
458 :デフォルトの名無しさん2011/10/30(日) 22:17:50.07
DBリンクなんて
他でも幾らでも使用実績あるだろ
何で知らないんだよ
>>434 は空想世間で生活してるのか?w
464 :デフォルトの名無しさん2011/11/01(火) 00:00:27.67
>>458
つーか、上場企業のシステムとかだとテーブル1万とか普通にあるからな。
普通は夜間バッチとかSOAPやREST系でDBと切り離してデータ交換するが、
リアル系はDBリンクがないときっついよな。
467 :デフォルトの名無しさん2011/11/01(火) 00:17:46.83
>>464
そうだな、DBリンクなんて
どの企業でも当たり前のように使ってる
既に8の時からあったから、技術者なら知っていて当然の常識だな
401 :デフォルトの名無しさん2011/10/30(日) 13:21:39.34
rdbのrがなにか知っているの発言かい
つかMappingフレームワークのスレでやれw

Springは一応JPA押しなんだっけか
まあJdbcDaoSupportなんかもあるけど
402 :デフォルトの名無しさん2011/10/30(日) 13:24:35.91
今はNoSQLが流行ってきてるからねぇ。

RDBはトランザクションのために使ってるけど、
最近はそれだけでいいのでは?って思う。
403 :デフォルトの名無しさん2011/10/30(日) 13:31:15.22
Springって降るスタック?
405 :デフォルトの名無しさん2011/10/30(日) 13:37:35.64
>>403
根本のDIのとこ以外は他のモノを利用できるような設計になってるから
SpringFramework全体ではフルスタックではないのでは
404 :デフォルトの名無しさん2011/10/30(日) 13:33:38.71
フルスタックとかやめてくれ。
今はPOJOの時代だ。

Springというフレームワークを使って作ると
Springに依存しないものが出来上がるのが
素晴らしいところなんだよ。
409 :デフォルトの名無しさん2011/10/30(日) 14:27:18.95
SQLを直接使うなら
DAOは逆に必須だろう。
410 :デフォルトの名無しさん2011/10/30(日) 14:37:19.17
>>409
必須ではないけど、まあ大抵テーブルごとのDaoにおちつくな

ただDaoってあくまで層分けのための範囲・概念だから
SpringのJdbcDaoSuppportみたいなSQLガリガリ実装もあれば
Hibernate実装のこともあるし
412 :デフォルトの名無しさん2011/10/30(日) 15:04:26.86
>>410
DAOなんて、
大層な名前つけてるけど所詮ただの入れ物だよ
SQLで取得したものを何らかの入れ物に保持する必要があるために
入れ物のクラスを作ってやる
それをDAOと呼ぶだけ
何か特別な意味のあるものと錯覚してる奴が多すぎw
414 :デフォルトの名無しさん2011/10/30(日) 15:10:49.70
>>412
いや、入れ物のクラスはVOとかDTOとかBeanだろw
418 :デフォルトの名無しさん2011/10/30(日) 16:22:57.86
>>414
それは画面側の入れ物だろ
RDBの対象の入れ物はDAOだ
411 :デフォルトの名無しさん2011/10/30(日) 14:40:53.54
層分けっていうか、ユニットテストのために
どうしてもそうするしか無いと思うよ。

前提としてユニットテストでは原則として
データベースサーバー無しで動かないといけない。

そうするとどうしてもデータベース部分を
切り離す必要が出てくるよね?
419 :デフォルトの名無しさん2011/10/30(日) 16:24:24.02
別にDAOはRDB専用じゃないだろ。
RDBの対象のとか言ってる時点で
お前わかってないんじゃねって思うよ。
420 :デフォルトの名無しさん2011/10/30(日) 16:26:07.04
所詮はDAOなんて
ただの入れ物に過ぎん
プログラムの都合上何かの入れ物に保持する必要があるから
便宜的に使ってるに過ぎん
421 :デフォルトの名無しさん2011/10/30(日) 16:27:43.35
DAOが何の略か知っていれば、
データにアクセスするためのオブジェクトであって
データを保持するオブジェクトではないと分かるはずなんだが・・・
423 :デフォルトの名無しさん2011/10/30(日) 16:33:23.43
名前なんてどうでもいいんだよ
ひとつのクラスで入れ物とアクセスを記述する例だってあるんだから
たかだかJDBCに接続してSQL発行する程度で定義の議論なんて馬鹿か
424 :デフォルトの名無しさん2011/10/30(日) 16:36:25.61
>>423
DB層なんてやってることは単純だからね
425 :デフォルトの名無しさん2011/10/30(日) 16:38:15.25
>>423
> ひとつのクラスで入れ物とアクセスを記述する例だってあるんだから

DAOは、アクセスするだけで入れものではないと
決まっているので、DAOの話をするのなら入れ物ではありません。
426 :デフォルトの名無しさん2011/10/30(日) 16:39:41.38
>>424
当たり前だw

単純だが冗長な部分を分離するのがDAOの目的。
DAOが太ってしまったら、なんのために分離したのかわからん。

DB層が単純と言うよりも、DB層は意図的に単純にするんだよ。
427 :デフォルトの名無しさん2011/10/30(日) 16:43:26.56
>>423
>ひとつのクラスで入れ物とアクセスを記述する例だってあるんだから
まあ、そういう例があろうがなかろうが・・・
一人きりで作ってて、他人に説明する必要が無いなら

>名前なんてどうでもいいんだよ
は、正しいけど・・・。
429 :デフォルトの名無しさん2011/10/30(日) 16:51:52.68
>>426
DB層なんて、エンティティとアクセスクラス作って終わり
それだけの話なのに
こんなに単純な構造で何をウダウダいう必要があるんだ?w
雑魚ほど吼えるなw
431 :デフォルトの名無しさん2011/10/30(日) 16:57:57.98
>>429
全角アルファベット使っている奴=全部同一人物が

ごちゃごちゃいっているからじゃねーの?w
432 :デフォルトの名無しさん2011/10/30(日) 17:11:42.73
>>431
お前の妄想だよカス
433 :デフォルトの名無しさん2011/10/30(日) 17:12:53.24
>>430
こんな掃き溜めスレに来る奴に上級がいるとでも思うか?w
>>426  みたいな底辺ばっかりだよw
430 :デフォルトの名無しさん2011/10/30(日) 16:56:09.72
ほとんどが素人に毛が生えた程度なんでしょう
だからくだらない議論を延々と続けてる
438 :デフォルトの名無しさん2011/10/30(日) 17:53:29.04
今は業務系よりも
ウェブサービスのほうが
大規模アプリになってしまったよね。
440 :デフォルトの名無しさん2011/10/30(日) 19:27:21.53
>>438
プッw
おまえwww
441 :デフォルトの名無しさん2011/10/30(日) 19:36:29.25
> mixi、モバゲーなどの、超大規模 web 2.0 系では、MySQL を数百台並べるけど、
> ああいったところは、たとえば日記テーブルとユーザマスタテーブルを別DBサーバにしちゃうんだよ。
> (日記DBと、ユーザマスタDBのなかで、さらにクラスタリングする)
>
> だから SQL で join できない

別DBでもSQLで取得できるのを知らないんだなw
たとえばoracleなんか簡単に出来る
449 :デフォルトの名無しさん2011/10/30(日) 20:01:08.37
しかし >>441 って凄いな〜
別DBだからSQLで問い合わせ出来ないとか自信満々に言ってやがるw
恥ずかしくないのかねぇw
442 :デフォルトの名無しさん2011/10/30(日) 19:44:08.76
oracle って DBサーバまたいで join とか出来たっけ?
443 :デフォルトの名無しさん2011/10/30(日) 19:52:43.05
>>442
できない。
できるRDMSって聞いたこと無いな。

できるにしても、別サーバーなんだから
極端にパフォーマンスは落ちるだろうね。
446 :デフォルトの名無しさん2011/10/30(日) 19:54:22.95
>>443
> >>442
> できない。
> できるRDMSって聞いたこと無いな。
>
> できるにしても、別サーバーなんだから
> 極端にパフォーマンスは落ちるだろうね。


コイツwww
馬鹿がいたぞwww

こんなんで技術者っていうのかよwww

知ったかぶりの極地だなwww

そして一分で論破されてやがるwww
消えろカスwww
452 :デフォルトの名無しさん2011/10/30(日) 20:28:34.53
>>450
あ、間違えたw


しかし >>443 って凄いな〜
別DBだからSQLで問い合わせ出来ないとか自信満々に言ってやがるw
恥ずかしくないのかねぇw
465 :デフォルトの名無しさん2011/11/01(火) 00:08:48.56
>>434
ボクは、javaScriptで遊んどけ。お前が見えてない世界では
コード書かないヤツでも常識で知ってることを平気で
否定してるからな。

>>443も
とりあえず「oracle DBリンク」でググって顔真っ赤にしとけ。
いやここでいいや。
ttp://download.oracle.com/docs/cd/E16338_01/server.112/b56301/ds_concepts002.htm
445 :デフォルトの名無しさん2011/10/30(日) 19:52:58.21
Oracleにはデータベース・リンクというものがあるだろ
何で知らないんだよ雑魚w
447 :4442011/10/30(日) 19:55:35.45
ちなみにSQLServerにも似たような機能がある
PostgreSQLにも何かあったような気がする
448 :デフォルトの名無しさん2011/10/30(日) 19:59:57.94
まあ内容は妥当なことを言ってるんだろうけど・・・
なんでそんなにヒートアップしてるの?
450 :デフォルトの名無しさん2011/10/30(日) 20:20:56.66
リンク間違ってるぞ
455 :デフォルトの名無しさん2011/10/30(日) 20:48:46.40
言ってる内容は間違ってないんだが
どうも言い方がねぇ
456 :デフォルトの名無しさん2011/10/30(日) 21:07:30.49
<ref local=
って複数指定できないの?
エラーになるんだが
461 :デフォルトの名無しさん2011/10/30(日) 22:51:25.79
>>456
エラーとコードを全部晒せ

まあ、ここよりstackoverflowにでもいって
全部コード晒して聞いてみたほうがはやいと思う
459 :4342011/10/30(日) 22:23:10.44
いや、頻繁な join や、よくアクセスするテーブルも
DBリンク越しにやってるのかなー、と思って。

※自分なら、頻繁にアクセスするようなテーブルは、DBリンク越しにしないで
自分のDBに持ってきてしまうので。
462 :デフォルトの名無しさん2011/10/30(日) 22:54:05.02
>>459
だったらそもそも別に分ける必要すらないだろ
460 :デフォルトの名無しさん2011/10/30(日) 22:34:09.09
パフォーマンスに無頓着な所が
データベースリンクを使ってるよ

重いですねぇ。もっとサーバーのスペックを挙げないといけませんねって所。
こういう所はサーバーの台数を増やすという発想がない。
サーバー一台の性能の限界が、開発力の限界になってる。
463 :デフォルトの名無しさん2011/10/31(月) 22:52:55.21
ForkJoinPool
なんで使ってるんだ?

もう7を先取りしてるとか?

安定版を供給しなさいw
466 :デフォルトの名無しさん2011/11/01(火) 00:16:26.56
うーむ、
WebSphereUowTransactionManager
なんて用意してるのかよ
spring は用意万端すぎるな
474 :デフォルトの名無しさん2011/11/03(木) 03:31:26.80
>>466
IBM系はIBMの中の人がなんかやってんじゃね
Spring関係の日本語ドキュメントとかも結構おいてるし、読みにくいけど…
469 :デフォルトの名無しさん2011/11/01(火) 14:07:38.14
どうもspringの挙動が理解できん
RegexpMethodPointcutAdvisorのadviceプロパティにセットするだけで
何でメソッドをインターセプト出来るんだ?
470 :デフォルトの名無しさん2011/11/01(火) 14:17:42.05

あるターゲットクラスのメソッドに対して
どうやってフック、コールバックしてんだ?
vmに何かの指令を出してるのか?
バイトコードをどのように操作してんだ?
475 :デフォルトの名無しさん2011/11/03(木) 10:37:43.82
spring使う程度ならば
(定義ファイルに書いて利用する程度)
フレームワークの理解などいらんか


・レベル1 --- 「spring使えます」程度の雑魚
・レベル2 --- springのフレームワーク理解できます
・レベル3 --- springのフレームワークのバイトコード操作部分の知識もあります
476 :デフォルトの名無しさん2011/11/03(木) 11:07:05.55
springのバイトコード書き換えって
どのレベルまでなの?
例えばクラスAの親クラスとの関係まで書き換えられる?
それともフィールドに値を動的変更する程度?
その程度ならばリフレクションでも可能だが
477 :デフォルトの名無しさん2011/11/03(木) 11:09:27.32
本当の意味のバイトレベルの操作というのは
クラスの構造や親クラスとの継承関係までも動的に変更できることを指すんだが
SPRINGフレームワークでは、そこまでの機能を提供してるのだろうか?
478 :デフォルトの名無しさん2011/11/03(木) 11:20:46.51
DI のコードのデバッグってただでさえややこしいのに、
バイトコード変換なんてことまでされた日には・・・。
479 :デフォルトの名無しさん2011/11/03(木) 11:24:28.30
例えば動的に
クラスのメソッドを追加するとか、フィールドを追加するとか
クラスの構造自体を動的に変更するとか
そこまでのバイトレベルの機能を提供してるんだろうか?
480 :デフォルトの名無しさん2011/11/03(木) 11:55:02.53
やりたきゃasmでも使って好きにしろ
ここはお前のtwitterではない
481 :デフォルトの名無しさん2011/11/03(木) 12:09:18.40
SPRINGが提供してる機能はどうってことない
自分で実装すれば良い
メソッドのバインディング程度ならば軽く実装出来るだろう
特に使う必要すら感じない
482 :デフォルトの名無しさん2011/11/03(木) 12:44:23.56
>>481
その通り
自作がカスタマイズが効いて一番良い
483 :デフォルトの名無しさん2011/11/03(木) 13:02:00.97
>>481
早速作ってくれ
484 :デフォルトの名無しさん2011/11/03(木) 20:05:17.25
つーか、バイトコード書き換えとか誰か望んでるんか?
そんな方面の実現はスクリプトで十分じゃねぇの?
メンバーにボンクラがいたりしたら、CPUアーキ
テクチャも勿論だし、JDK、VMレベルの前提環境が
変わった途端、あちこち動かなくなるんじゃね?
487 :デフォルトの名無しさん2011/11/04(金) 07:13:02.58
>>484
springのやってること自体を否定する低レベル乙
486 :デフォルトの名無しさん2011/11/03(木) 23:04:51.50
知らない低脳なので詳しく解説してくれ
494 :デフォルトの名無しさん2011/11/05(土) 07:44:15.12
>>486
アプリをランタイムが実行するときに
コンパイルされたソースを書き換えるライブラリがあるんよ。
JBossならJavassistっていう東工大の人が作った有名なの使ってるし
SplingならAOP Aliance?とかいうの使ってたはず。
O/Rマッパーもエンティティクラスをあれで書き換えてるじゃないかな。
539 :デフォルトの名無しさん2011/11/06(日) 12:07:35.26
>>494
2.5時代の知識しかないけど、SpringのデフォルトはJavaのProxyを使ったAOPで
AspectJに対応することで、他フレームワークがjavassistでやるようなバイトコードレベルの拡張に対応していた

ここら辺に書いてあるやつ
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-using-aspectj

AOP AllianceはたしかAOPに関するIFを取り決めたもので、実装は関係なかった気がする
488 :デフォルトの名無しさん2011/11/04(金) 16:53:41.10
Spring 2.5 までの知識しかないけど、
Spring ってバイトコード書きかえってやってるの?
AOP のインターセプターがやっている、あるメソッド呼出と、レシーバとの間にproxyクラスを挟むだけだと思っているんだけど。
# オリジナルの挙動は書き換えない。


javassist でやっているバイトコード書き換えは、Seasar2 のほうなのでは?
489 :デフォルトの名無しさん2011/11/04(金) 20:25:07.33
>>488
> Spring ってバイトコード書きかえってやってるの?

やってるよ
490 :デフォルトの名無しさん2011/11/04(金) 20:28:20.56
>>488
DIとAOPはそれでも実現可能だが
491 :デフォルトの名無しさん2011/11/04(金) 21:58:18.06
>>489
どこらへんで?
492 :デフォルトの名無しさん2011/11/04(金) 23:13:12.11
知ってるとか知らんとかの問題じゃねぇだろ。
望んでるんかと書いてるが日本語読めないのか?
495 :デフォルトの名無しさん2011/11/05(土) 12:40:09.60
> SplingならAOP Aliance?とかいうの使ってたはず。

ぷっw
無知
498 :デフォルトの名無しさん2011/11/05(土) 21:36:05.50
ついでにAllianceもLが一個たらんな

AOP AllianceてSpringで配布やつと
SourceForgeで配布してるやつに分裂してるのはなぜなんだぜ
499 :デフォルトの名無しさん2011/11/05(土) 22:22:06.95
Allianceならまだわかるけどな。
Springを間違えるって大丈夫か?

春だぞ春。summer、autumn(fall)、winterと一緒に
中学生で習う英単語だろ?
500 :デフォルトの名無しさん2011/11/05(土) 22:26:22.43
しゅぷりんぐの偉大なところはまともな日本語こみゅがなくても誰も困ってないこと
501 :デフォルトの名無しさん2011/11/05(土) 22:44:22.67
つーか底辺が多すぎるんだが

俺はソース全部解析したから
spring の動きとか仕組みは全部把握してる
技術者と名乗りたいのなら、最低限のレベルだ
502 :デフォルトの名無しさん2011/11/05(土) 22:45:59.40
どうせ「案件で設定ファイルに書いたことあります」キリッ
ってやつばかりなんろうがw

いくらフレームワークが発達しても
内部の挙動ぐらい把握できないような雑魚が増えるのはどうかと思うがねぇ
504 :デフォルトの名無しさん2011/11/06(日) 01:08:24.31
なら解説してみろよ
どうせ理解すらしてないんだろうけど
FWのコードを理解するのって実力が必要だからな
505 :デフォルトの名無しさん2011/11/06(日) 01:18:26.66
なにを解説しろと?
springなんてリフレクションの機能使って
アノテーション見て、適当な値を入れたり、
処理を割りこませてるだけだろ。
509 :デフォルトの名無しさん2011/11/06(日) 01:48:26.18
>>505
具体的に説明して欲しいな
MethodPointcutAdvisorはどこでバインドされてるとか
510 :デフォルトの名無しさん2011/11/06(日) 01:49:17.51
>>505
> なにを解説しろと?
> springなんてリフレクションの機能使って
> アノテーション見て、適当な値を入れたり、
> 処理を割りこませてるだけだろ。

あぁ、コイツ全然わかってねーやw
たぶん解析も出来てないし、説明も出来ないわw
512 :デフォルトの名無しさん2011/11/06(日) 01:52:16.98
>>510
いやw springのソース見ろよ。っていか見る以前に
springを使ったソースコードに
アノテーション使ってるだろ。

反論したいというそのお前の気持はわかるが
もう少し具体的にかけや。
お前のそのレス、中にもがなにも無いぞ。
わかってな〜い、わかってな〜いに終始してるだけだ。
513 :デフォルトの名無しさん2011/11/06(日) 01:54:34.22
>>512
だ・か・ら
具体的に説明して欲しいな
MethodPointcutAdvisorはどこでバインドされてるとか

バインドとコンテナの仕組みを簡単に説明しろ

どうせ、出来ないんだろうがw
早く説明してくれよ素人クンw
517 :デフォルトの名無しさん2011/11/06(日) 02:23:44.82
だから>>505 のような雑魚に聞いても無駄だって
こいつのレス読めば底辺の土方PGだって読み取れるだろw
518 :デフォルトの名無しさん2011/11/06(日) 02:42:09.41
確かに底辺ばかりのスレですね
特に >>505
524 :デフォルトの名無しさん2011/11/06(日) 07:59:37.55
しかし >>505 がプログラムなど全く出来ない糞なのが
よくわかったと思う、コイツは史上最低の阿呆だな
506 :デフォルトの名無しさん2011/11/06(日) 01:21:14.08
理解するだけで実力自慢かよ
自慢するならなんか公開してからだろ。お前のリポジトリどこよ?
508 :デフォルトの名無しさん2011/11/06(日) 01:36:19.42
>>506
じゃあ、言いだしっぺのあなたからどうぞ(笑)
507 :デフォルトの名無しさん2011/11/06(日) 01:30:47.32
Spring Rooの話題ってあまりでないね

あとソース理解してるとかより、コミッターやってますとか
一日一回stackoverflowとかでヘルプしてますとかのほうが
みんな幸せになれるんじゃね
511 :デフォルトの名無しさん2011/11/06(日) 01:50:01.18
>>507
そんなハイレベルな人がいると思うか?
2chの掃き溜めスレに
521 :デフォルトの名無しさん2011/11/06(日) 03:10:02.16
読めば分かることで、なんか偉そうに
しているのを見ると微笑ましいw
525 :デフォルトの名無しさん2011/11/06(日) 08:15:43.80
SPRINGのソースは難しいよ
これを把握できる人なんて相当上級だよ
少なくともこのスレに投稿する連中が理解できるレベルじゃないのは確か
そんなレベルだったら技術の基盤チーム担当になれる
526 :デフォルトの名無しさん2011/11/06(日) 09:01:33.69
難しいといっても、アセンブラ使えて
さらにプログラムの書き換えまでやっていた
俺にとっては、読めばすぐに分かる程度のコードだろうな。
530 :デフォルトの名無しさん2011/11/06(日) 09:16:03.57
>>526 のような屑っているんだよなぁ
実際にコードが読めないのに

まるで底辺のゆとりが「俺が本気だしたら凄いんだぞ!明日から本気出す」
と一緒なんだよなぁw

なんでこういう馬鹿が生きてるのか?不思議だわww
527 :デフォルトの名無しさん2011/11/06(日) 09:04:49.11
とバカが言っております
皆さんスルーしてやって下さい
ただの狂人の妄想ですからw
528 :デフォルトの名無しさん2011/11/06(日) 09:10:37.11
他人が簡単に理解できるのを見ると
辛いよねw

でも、君、アセンブラやったことある?
529 :デフォルトの名無しさん2011/11/06(日) 09:14:36.67
キチガイが登場してきたなw
アセンブラとか言ってますよww

市ね、と言ってあげましょうね
531 :デフォルトの名無しさん2011/11/06(日) 09:24:15.04
そうそう
実際に読んでもいないのに
俺はアセンブラできるから、本気になったら読めるだろう
とか言い出す奴が一番レベル低いんだよなぁ

オブジェクト指向とアセンブラって全く構造が違うのに
その入り口さえも理解してない

こういう人を育てた
親の教育が間違ってたと思うんだよ、そもそも生んだ事自体が間違えだったかもねw
532 :デフォルトの名無しさん2011/11/06(日) 09:29:57.17
はて? なんでアセンブラやっていたら
オブジェクト指向できないと思っちゃうわけ?w

両方できるぞ。
534 :デフォルトの名無しさん2011/11/06(日) 09:52:07.77
どうせダウンロードすらしてない底辺だろうけどw
アセンブラだってよww
いつの時代だよww カスww
535 :デフォルトの名無しさん2011/11/06(日) 09:57:01.11
アセンブラの土方プログラマに
オブジェクト指向の複雑なコードを解読する力なんでないよ
springはパッケージが膨大で極めて複雑な処理のオンパレードだ
土方プログラマ如きに読めるシロモノじゃないよ
536 :デフォルトの名無しさん2011/11/06(日) 10:15:09.81
一昔前の Sesar2 スレかと思うほどにつまらん煽り合い・・・
どうしてこうなった。
537 :デフォルトの名無しさん2011/11/06(日) 10:15:40.41
>>535
理解するならソースなんかより
ロッドジョンソンの本でも読んだほうがはやいんでは

最終的にソース読むとしても
どんな考えのもとにフレームワークを設計したか、を知るには
自然言語のほうがいいですやん

>>536
2chだから、あとなんか話題ふってw
538 :デフォルトの名無しさん2011/11/06(日) 10:18:51.00
>>537
ロッドジョンソンの本はいろいろあるが
springの設計思想について叙述した著書がない
だからコードを直接見て理解するのが最短だろう
540 :デフォルトの名無しさん2011/11/06(日) 12:15:14.32
1.1 時代だとトランザクションの為に AOP 使うのに
GCLIB が必要になってた気がする。
今って GCLIB 使ってないんか。

化石のような知識のままでも3.0普通に使えるし
設計の洗練されっぷりに鼻血が出る。
541 :デフォルトの名無しさん2011/11/06(日) 12:19:49.45
>>540
> 今って GCLIB 使ってないんか。

使ってるよ
544 :デフォルトの名無しさん2011/11/06(日) 12:28:16.43
>>540
アスペクト関係使うときはaop allianceとかと一緒にいれるね
あとなんかひとつ必要だった気がスルガわすれた orz
547 :デフォルトの名無しさん2011/11/06(日) 12:56:48.79
>>540
インターフェイスを使わないクラスにAOP使用するときに使う(AspectJ使わないとき)

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-introduction-proxies
543 :デフォルトの名無しさん2011/11/06(日) 12:26:28.30
3.1はまだRCだろ
てかSpring使うような案件だと3.1出てもすぐには使わないんではなイカ
549 :デフォルトの名無しさん2011/11/06(日) 16:40:21.35
英語のマニュアル載せても読めないw
日本語の乗せてくれ
551 :デフォルトの名無しさん2011/11/06(日) 19:20:40.23
いじるって
どこまでのレベル?

設定ファイルを色々と試す程度か?
553 :5502011/11/06(日) 20:14:37.00
Spring2.5 のころはちゃんとソース読んでたぞ!!

HibernateDaoSupport とか iBatisDaoSupport の仕組みとか、
同梱されているPDFはもちろん、あとはソース読んだりして勉強した。
JUnit のスーパークラスも Spring から提供されているが、
「テスト終わった後、トランザクションはロールバックされるの? コミットされるの?」
ということもわかっていなかったので、追っかけたりしていた。
偉そうに書いているが、何分自分のスキルが低いので、PDF 検索したりソースを grep ばかりしていた。

3.1は、まずいろいろ忘れているので、
設定ファイルを色々と試したり
applicationContext.xml をちょこっといじる程度から
始めないといけないなw

ROOって必須ではないんだよね?
ROO でエンティティクラスを自動生成するデモを見たことがあるけど、
単なるエンティティなのに、なんかいろいろなクラスが生成されてて「ちょっとなぁ・・」っと思っていたので。
554 :デフォルトの名無しさん2011/11/06(日) 20:40:00.28
ROOは単なるツールだろ
何でそんな基本すら忘れてるんだよw
本当に実績あんのか?
555 :デフォルトの名無しさん2011/11/06(日) 20:53:15.31
> 同梱されているPDFはもちろん、あとはソース読んだりして勉強した。

そんなんあったっけ?
556 :5502011/11/06(日) 21:38:30.77
> ROOは単なるツールだろ

いや、2.5以降ほんとうにSpring離れていたので、
(離れていても、blog 等追いかけてろ、と言われればその通りだが)
認識したかっただけです。

PDF は、spring のフルセットの zip をダウンロードすると、その中に入っていた気がする。
557 :5502011/11/06(日) 21:39:14.70
誤:認識したかっただけです
正:確認したかっただけです
558 :デフォルトの名無しさん2011/11/06(日) 22:25:08.69
spring のソースコードを読むために必要な技術

について書かれている本ってある?
560 :デフォルトの名無しさん2011/11/06(日) 22:41:12.93
> PDF は、spring のフルセットの zip をダウンロードすると、その中に入っていた気がする。

解凍してみたけど
無いようなんだが・・・
561 :5502011/11/06(日) 23:06:16.08
>>560
いま、Spring のサイトから zip を落としてみたけど、入っていたよ。

http://www.springsource.org/
→ページ下の Projects で Spring Core をクリック
→ページ右側の RELEASE SUMMARY で SpringFramework 2.5.6SEC03 の download をクリック
→spring-framework-2.5.6.SEC03-with-docs.zip をダウンロード(35.4MBのやつ)

zip を展開して、docs\reference\pdf の下にある。

PDF だけ見たければ、
http://www.springsource.org/
→ページ下の Get Started の Documentation
→SpringCore
→ページ右側に、PDF、HTML、javadoc、changelog がある。
562 :デフォルトの名無しさん2011/11/07(月) 01:49:26.29
APIリファレンスのPDF版なら1.xから入ってたよ
あれはHibernateと同様にdocbookからHTMLとPDFを生成してる
同じ人がコントリビュートしたんだけどね
563 :デフォルトの名無しさん2011/11/07(月) 04:58:56.06
ソース読み自慢してるアホがいるけど
使い方を知ってれば十分だろ

ソースを読まないと使いこなせないように
できているとすれば、それはツールとして間違っている
564 :デフォルトの名無しさん2011/11/07(月) 05:25:27.00
使えます程度の初心者
そんなのを「技術者」と呼んでいいのか?
568 :デフォルトの名無しさん2011/11/07(月) 10:45:02.68
>>564
そんなものは要求しだいだろ。
プログラムだけしてればいいなら別だが。
569 :デフォルトの名無しさん2011/11/07(月) 12:42:11.17
>>564
それは案件のPGレベルだな
土方プログラマと呼ばれる類の人種だ
使い捨てだ
570 :デフォルトの名無しさん2011/11/07(月) 17:18:09.55
使い捨てのPGなら設定ファイルに
ごにゃごにゃかける程度でいいな
571 :デフォルトの名無しさん2011/11/07(月) 17:37:57.54
逆にPMとかなら、他で充分な経験があれば、
基本的なことがわかれば充分と言う話もある。
572 :デフォルトの名無しさん2011/11/07(月) 18:26:57.54
PMにフレームワークの深い知識なんて求められんよ
むしろ業務知識とかの方が求められる
575 :デフォルトの名無しさん2011/11/07(月) 20:41:48.78
PMはむしろ、自分は何が分かってないか(何を他人に任せるべきか)、
だけは分かっててほしいけどな。
会議で基盤技術チームに「そもそもDIというものはだな・・・」とか
説教始めるのは勘弁。
577 :デフォルトの名無しさん2011/11/07(月) 22:51:40.83
仕事でやってるのなら、よっぽど小さい
プロジェクトじゃない限り、複数の人で開発するわけで
他人の書いたソースを読むのは普通でしょ?

他人の書いたソースを読んでることが自慢になると
思っているヤツのほうこそ、お前プロじゃないの?って思うんだけど。
578 :デフォルトの名無しさん2011/11/07(月) 23:08:34.56
チンケなソースが読めるのと
世界最高峰のプログラマが書いた設計思想が読み取れるのと
雲泥の違いというのがわからん馬鹿
579 :デフォルトの名無しさん2011/11/07(月) 23:09:51.17
>>578
お前の会社のプログラマって
それぐらいもできないの?
580 :デフォルトの名無しさん2011/11/07(月) 23:29:11.29
>>579
ではお前はspringのバインドとインタセプターの実装を
具体的に説明できるんだろうな?

実際のコードで説明してくれ
587 :デフォルトの名無しさん2011/11/08(火) 00:51:12.66
それで優秀な >>579 さんは
いつになったら説明してくれるんだろうな?w
もう逃げのかな?w
588 :デフォルトの名無しさん2011/11/08(火) 00:51:14.50
>>580
説明頼む
581 :デフォルトの名無しさん2011/11/07(月) 23:39:33.04
無理だろ
こんなカスにRJのコードが読めるワケないってw
582 :デフォルトの名無しさん2011/11/07(月) 23:55:15.05
読めるってやつが以前にもスレでいたが
その後一切音沙汰なしだもんな
複雑な設計思想のspringが解析できるスキルある奴なんて
こんなカススレに存在しないよ
583 :デフォルトの名無しさん2011/11/08(火) 00:08:31.92
インジェクションするだけのフレームワークのくせになんであんな大規模で複雑なんだろうな。
584 :デフォルトの名無しさん2011/11/08(火) 00:18:01.21
完成したフレームワークを使える程度の
雑魚が調子に乗ってるようだな
使えるのと内部コードを把握できるのと次元が違うのも理解できない雑魚
まぁ土方PGじゃ仕方ないかw
586 :デフォルトの名無しさん2011/11/08(火) 00:45:51.90
内部コードを把握できるほどの有能なプログラマなら、
もうすこし技術的に有益なことを書いてくれないかな。
589 :デフォルトの名無しさん2011/11/08(火) 00:57:27.88
此処の人達にコアの解析なんて無理でしょ
小学生に英語の論文を読めって言ってるようなもんだよw
592 :デフォルトの名無しさん2011/11/08(火) 01:28:06.62
読めるとかいう香具師は
最低でも各パッケージの主要クラスの役割を説明してほしいものだ
どうせ出来っこないろうが
593 :デフォルトの名無しさん2011/11/08(火) 01:44:24.82
追っかけてみたが
たった数行の登録だけで
凄まじく複雑な処理してるんだな

余りにもネストが深すぎて
どこでバインドしてメソッドインターセプト挟んでるのか追うだけでも大変だわ
594 :デフォルトの名無しさん2011/11/08(火) 02:19:46.62
ジョイントポイントの設定はどのクラスでやってるの?
595 :デフォルトの名無しさん2011/11/08(火) 02:39:31.06
>>594
ジョイントポイントちゃう!ジョインポイント(join point)や!
596 :デフォルトの名無しさん2011/11/08(火) 03:05:06.08
join pointに対してAdviceを設定ファイルに書けば
スプリングが勝手に構築してくれるのだが
実際のコードを見ると極めて構造が複雑でとても追いきれるシロモノじゃない
読める奴は説明してみろ
597 :デフォルトの名無しさん2011/11/08(火) 19:40:18.14
別にどうポイントカットしようが知った事じゃないけどね。
ツールオタクになるより重要な事があるだろ。人を使う側の人間なら。
598 :デフォルトの名無しさん2011/11/08(火) 20:15:17.53
ポイントカットとアドバイス
どう違うの?
599 :デフォルトの名無しさん2011/11/08(火) 20:33:33.93
Struts2での案件が来た
さんざん別のフレームワークにしてくれと言ったのに通じなかった
助けてくれ
600 :デフォルトの名無しさん2011/11/08(火) 23:10:34.62
>>598
ポイントカットに差し込まれる処理がアドバイス
アドバイスが差し込まれる場所がポイントカット
ポイントカットとして選べる場所がジョインポイント

>>599
Struts(1.x)じゃないだけマシ
601 :デフォルトの名無しさん2011/11/09(水) 00:08:42.65
結局偉そうなことを言っておきながら
誰もコード読んでないのかw
603 :デフォルトの名無しさん2011/11/09(水) 02:47:44.77
コード読む人って
tomcatとかsendmailとかも全部読んでから使うの?
そもそもオープンソース以外のソフトウェアはどうするんだ…
604 :デフォルトの名無しさん2011/11/09(水) 04:55:10.97
Struts2って全然だめじゃないだろ。嫌がる要素あるのか?
別のフレームワークってSpringMVCあたり?

>>603
sendmailってもう使われてな・・Tomcatは部分的なら読んでる人結構いると思うが。
605 :デフォルトの名無しさん2011/11/09(水) 05:33:51.73
SpringMVCの導入実績なんて聞いたことないな
606 :デフォルトの名無しさん2011/11/09(水) 11:58:29.24
Soring とは若干ずれるが、
Struts2 がだめならほかにどんなのを使っているのか、興味がある。

wicket、Click はおもしろいと思うし、Spring 連携機能もあるが、
業務系で使っているのはほとんど聞いたことがない。
# 自分個人で作るサイト、使い捨てプロジェクト内webツールみたいなのではやったことがあるけど。

>>605
おれのまわりでは SpringMVC 使っている案件も結構ある。
「俺の周り」と言われても困ると思うが、、、まぁそんな例もあるということで。
607 :デフォルトの名無しさん2011/11/09(水) 12:00:40.28
>>606
> Struts2 がだめならほかにどんなのを使っているのか、興味がある。

マーヤじゃね?
あるいはJSFかも
608 :デフォルトの名無しさん2011/11/09(水) 13:14:13.43
JSFはStruts以上に終わってると思うんだが・・・・
まぁ自分も JSF 1.2 までしか使ったことがないので、2.0 でどう変わったかはあまり知らんけど
609 :デフォルトの名無しさん2011/11/09(水) 13:18:00.78
jsf案件は見たこと無いなぁ
何が避けられてる原因なのかね?
ライフサイクル管理が面倒くさいから?
611 :デフォルトの名無しさん2011/11/09(水) 20:43:30.84
>>609
サーバ側で色々やりすぎてるせいでクソ重いし
開発環境とのセットで画面を簡単に開発できるのが売りだったけど、
最近じゃ画面系はJSのライブラリで動かすのが定番だし
時代に取り残された感が強い
元ネタのASP.NETも最近はRailsライクなMVC版出してるし
610 :デフォルトの名無しさん2011/11/09(水) 14:05:55.48
aopするクラスって
必ずインターフェースを付けないとダメなの?
616 :デフォルトの名無しさん2011/11/09(水) 21:17:38.07
>>610
そうだと思う
617 :デフォルトの名無しさん2011/11/09(水) 21:36:14.72
>>610
つけなくても出来る
618 :デフォルトの名無しさん2011/11/09(水) 21:59:27.20
>>617
AOPする対象に
インターフェースつけないと
エラーになるんだけど
624 :デフォルトの名無しさん2011/11/10(木) 01:30:02.31
>>618
proxy-target-class="true"
698 :デフォルトの名無しさん2011/11/11(金) 23:02:32.51
>>697
>>624
612 :デフォルトの名無しさん2011/11/09(水) 20:57:26.06
> 最近じゃ画面系はJSのライブラリで動かすのが定番だし

javaSprictなんて過去の遺物だろw
615 :デフォルトの名無しさん2011/11/09(水) 21:12:58.57
プログラマ:出来るだけ鯖側でやろうよ、めんどくさい
デザイナ:俺なら全部cssでやれるよ
ブログ弄って出来る気になってる人:jsで全部出来るよ
619 :デフォルトの名無しさん2011/11/10(木) 00:35:48.74
Springで画面作るときの、パターン的なクラス構成ってある?

Action,Service,Daoみたな。
625 :デフォルトの名無しさん2011/11/10(木) 11:37:09.92
インターフェースがなくても、クラスからクラスやメソッド定義を読み取って
proxyクラスを作るのが cglib なんだっけ?
685 :6822011/11/11(金) 15:59:59.13
>>684
実は、おれ >>625 なんだなw
最初は喧嘩が始まって、なんか申し訳なくなったが、
javassist との流れを読んで勉強になった。
626 :デフォルトの名無しさん2011/11/10(木) 11:42:23.70
cglibなんて使ってねーだろ!
どこで使ってるんだよw

springはcglibなんて使ってないぞ

629 :デフォルトの名無しさん2011/11/10(木) 13:19:06.53
>>626-627
ttp://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop-api.html#aop-pfb-proxy-types

pom.xmlのdependencies見ればCGLIBに依存してるって一目でわかるだろ…
630 :デフォルトの名無しさん2011/11/10(木) 13:33:07.36
どこが依存してるって?w
CGLIBも使ってますよ程度のコトしか書いてないんだがねぇw
631 :デフォルトの名無しさん2011/11/10(木) 13:38:14.61
optionalでも依存は依存だろ。
「CGLIB"も"使ってますよ」と「CGLIBなんて使ってない」が同義だとでも思ってるのか?
632 :デフォルトの名無しさん2011/11/10(木) 13:44:32.53
まさかとは思うがpomの見方も知らないわけじゃないよな?
dependencieがoptionalってことはspring-aop自体をビルドするのにCGLIBが必須ってこと
それは依存してるっていうんだよ
ただしユーザが実行する時はなくてもいい。AspectJスタイルのAOPしか使わない場合な
633 :デフォルトの名無しさん2011/11/10(木) 14:06:52.05
>>632
>AspectJスタイルのAOPしか使わない場合な

そんなAOPねーよw

CGLIBを使う使わないのはオプション選択なのは正解だが
634 :デフォルトの名無しさん2011/11/10(木) 14:08:48.64
>>632
CGLIBだけじゃないぞ
aspectjweaverも依存関係にある
635 :デフォルトの名無しさん2011/11/10(木) 15:22:10.41
>>633
ttp://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-choosing
Spring RooはAspectJスタイルのAOP使ってるだろ

>>634
CGLIBにだけ依存してるとは書いてないだろ… 全部列挙しろってか?
677 :デフォルトの名無しさん2011/11/11(金) 01:09:15.90
>>675
>>626や>>633も訂正してないな
636 :デフォルトの名無しさん2011/11/10(木) 16:42:33.64
> Spring Roo

別に使わなくてもいい
ただのツールだろw
必須でも何でもないただのオプションを何で必須のように言うのかな?w
637 :デフォルトの名無しさん2011/11/10(木) 17:08:40.21
>>636
必須だなんて書いてねー
AspectJスタイルのAOPを使ってる(Springから見て)アプリの一例としてあげただけ
638 :デフォルトの名無しさん2011/11/10(木) 17:30:52.19
>>637
> AspectJスタイルのAOPを使って

使い必要あんの?
静的AOPなんでしょ
639 :デフォルトの名無しさん2011/11/10(木) 18:09:40.47
Load-time weavingといってクラスロード時にバイトコード変換することもできる
ttp://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-aj-ltw
646 :デフォルトの名無しさん2011/11/10(木) 22:48:29.73
>>639
SpringとAspectJの連携は解りにくいからね
AOPの定義にAspectJのアノテーションや記法を使うだけで、AspectJのweavingは使わないやり方と
全部AspectJに任せてしまうやり方の2パターンあるし
647 :デフォルトの名無しさん2011/11/10(木) 22:57:48.23
>>646
よかった、こんなスレでも話の通じる人がちゃんといるんだな
細かく分けると3パターン
・Proxyスタイル+Springポイントカット
・Proxyスタイル+AspectJポイントカット
・AspectJスタイル
649 :デフォルトの名無しさん2011/11/10(木) 23:02:00.97
>>647
肝心のCGLIBでAOPが抜けてるだろw
650 :デフォルトの名無しさん2011/11/10(木) 23:18:13.70
>>649
それはProxyスタイルに含まれる
お前>633だろ?AspectJスタイルのAOPがあることは認めたのか?
651 :デフォルトの名無しさん2011/11/10(木) 23:22:18.60
>>650
別人だが

> Proxyと
> CGLIB
で全然違うぞw
653 :デフォルトの名無しさん2011/11/10(木) 23:31:42.79
>>651
そりゃ失礼、あまりにそっくりだったんで

CGLIBもProxyを作るんだよ
だからJDK動的ProxyとCGLIBをひっくるめてProxyスタイル
ttp://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-proxying

なんでドキュメントも見ずに大口叩くかね?
654 :デフォルトの名無しさん2011/11/10(木) 23:41:11.81
>>653
> Proxyスタイル

そんな分類するとかアホですか?
AOPをどうやって実現するかで分類すべきだろ

んなこと言い出したらAspectJだって
やってることはプロキシの役割だろ
655 :デフォルトの名無しさん2011/11/10(木) 23:47:07.75
>>654
> そんな分類するとかアホですか?

Springsourceの人に言ってくれ

> んなこと言い出したらAspectJだって
> やってることはプロキシの役割だろ

違う。だからドキュメント読んでから大口叩けって

Finally, it must be noted that AspectJ does not have this self-invocation issue because it is not a proxy-based AOP framework.
656 :デフォルトの名無しさん2011/11/10(木) 23:47:34.29
>>654
それはSpringに言えよw

AspectJはクラス自体を変えてしまうからProxyではないような
657 :デフォルトの名無しさん2011/11/10(木) 23:59:55.25
>>656
プロキシでもクラス自体は別になる
普通のインスタンスとは違う
659 :デフォルトの名無しさん2011/11/11(金) 00:06:03.85
>>657
そういう意味じゃなくて、クラスそのものを弄ってしまうということ
CGLIBやjavassistで拡張されたものは元のクラスの継承クラスとしてClassLoaderに登録されるけど
AspectJでは、元のクラスそのものが拡張されて登録される
662 :デフォルトの名無しさん2011/11/11(金) 00:21:33.50
>>659
> クラスそのものを弄ってしまうということ

言っている意味がわかってるのか?
CGLIBやjavassistのバイトコード操作は
全く別のクラスとして生成されることぐらい知らないようだが

そもそもクラスファイルの構造すら知らないだろうが
663 :デフォルトの名無しさん2011/11/11(金) 00:23:43.15
>>662
いや、だから別のクラスとして登録されるって言ってるだろ・・・
クラスそのものを云々はAspectJの話だぞ
671 :デフォルトの名無しさん2011/11/11(金) 00:43:29.70
ttps://src.springframework.org/svn/spring-framework/trunk/org.springframework.aop/src/main/java/org/springframework/aop/framework/Cglib2AopProxy.java
Cglib2AopProxy#getProxy(ClassLoader classLoader)から抜粋

Class rootClass = this.advised.getTargetClass(); //これが元のクラス
Class proxySuperClass = rootClass; //元のクラスと同じ
if (ClassUtils.isCglibProxyClass(rootClass)) {
//元のクラスが既にCGLIBでエンハンスされてた場合なのでここは無視
}
enhancer.setSuperclass(proxySuperClass); //元のクラスをスーパークラスに設定
proxy = enhancer.create(); //動的にクラスを生成

CGLIBによって作られるクラスは元のクラスを継承したクラス
よって>>659は正しい
俺は>>659じゃないけど検証終わり
674 :デフォルトの名無しさん2011/11/11(金) 00:57:39.89
>>659
> そういう意味じゃなくて、クラスそのものを弄ってしまうということ
> CGLIBやjavassistで拡張されたものは元のクラスの継承クラスとしてClassLoaderに登録される

ふーん、ハッキリと書いてるのにねぇ
691 :デフォルトの名無しさん2011/11/11(金) 21:32:17.29
各人が勝手なコンテキストで語るから混乱するという典型だね。
SpringはCGLIBのEnhancerというクラスを使っている。
そのJavadoc。
ttp://cglib.sourceforge.net/apidocs/net/sf/cglib/proxy/Enhancer.html

Generates dynamic subclasses to enable method interception.

このとおり、これは動的にサブクラスを作る。
SpringはJavassistを使わないが、同時に利用されることが多いHibernateは
JavassistのProxyFactoryを使うこともできて、これもサブクラスを作る。
(ProxyFactoryはHibernateが元々使っていたCGLIBのEnhancerと切り替えて
使えるように追加されたものなので使い方はよく似ている)

SpringやHibernateでの使い方に限定すればこれらはサブクラスを作って
ClassLoaderにロードするので>>659は正しい。

ただしCGLIBはEmitter、JavassistはCtClassなどを使うことで、クラスファイルから
読み込んだバイトコードを直接変更することもできる。
このコンテキストでは>>659は正しくない。
694 :デフォルトの名無しさん2011/11/11(金) 22:03:47.08
>>691
なるほど、そういうことだったのね
JavassistやCGLIBを利用するときは
低レベルでのバイトコード操作がデフォルトだと思っていたよ

・enhancerを使う = プロキシ的に使用する
・ctclassを使う = バイトコードを直接変更する

という理解でOK?
695 :デフォルトの名無しさん2011/11/11(金) 22:14:39.35
>>694
うむ。だいたいOKだ。
640 :デフォルトの名無しさん2011/11/10(木) 19:06:25.45
cglibなんて使ってねーだろ! → 使ってました
そんなAOPねーよw → ありました
641 :デフォルトの名無しさん2011/11/10(木) 19:49:37.62
必要な割には添付されてないんだよな
jar達が
648 :デフォルトの名無しさん2011/11/10(木) 22:58:24.21
>>641
つMaven
658 :デフォルトの名無しさん2011/11/11(金) 00:04:07.27
バイトコードレベルで変更する
点で見るならjava Proxyも同じことをしてると思われる
戻ってきたインスタンスを良く見れば元々のクラス構造とは別になっている$hというのが証拠だ
660 :デフォルトの名無しさん2011/11/11(金) 00:11:37.61
>>658
JDK動的Proxyに元々のクラスはない。実装するインターフェースがあるだけ
java.lang.reflect.Proxy.getProxyClass()を見てみな
Springは元々のクラスが実装しているインターフェースをそいつに渡してるだけでクラスは渡さない
661 :デフォルトの名無しさん2011/11/11(金) 00:17:51.28
>>660
お前何を言ってるんだ?w
たぶんコードすら追ったことがないんだろうがw
ちゃんとproxyクラスで処理されてるよカス
664 :デフォルトの名無しさん2011/11/11(金) 00:24:57.18
>>661
日本語が通じないタイプか
コードを追う前に(それもできてるか怪しいが)文脈を追ってからレスしろ
>>660は>>658への返答だ。後はわかるよな?
667 :デフォルトの名無しさん2011/11/11(金) 00:27:47.66
>>662も日本語が通じてないな。>>661と同一か
このスレはダメかもしれんね。過疎ってた方がましだったな
665 :デフォルトの名無しさん2011/11/11(金) 00:25:24.97
> CGLIBやjavassistで拡張されたものは元のクラスの継承クラスとしてClassLoaderに登録されるけど

全然違うんだがw

「継承クラスとしてClassLoaderに登録される」って
いい加減なことを書かれたら困る
666 :デフォルトの名無しさん2011/11/11(金) 00:27:16.79
>>665
まちがってるものを「間違ってる」というより
長文になってもいいから正解を書いたほうがいいのでは
668 :デフォルトの名無しさん2011/11/11(金) 00:31:12.71
>>665
アホはスルーで良いんじゃないですか?
669 :デフォルトの名無しさん2011/11/11(金) 00:32:15.71
たぶん >>666 は自演だろうな
こういう基地害が湧き出したらスレの終焉だわ
672 :デフォルトの名無しさん2011/11/11(金) 00:48:35.32
CGLIBしかコード見てないのに正しいとか言ってる奴がいるんだが
javassistは一切検証なしかよ。それで技術者と思ってる?
673 :デフォルトの名無しさん2011/11/11(金) 00:51:22.23
>>672
Spring AOPはJavassistを使ってないからここで検証する必要がない
以上
675 :デフォルトの名無しさん2011/11/11(金) 01:04:49.59
確かにjavassistも元のクラスを継承するって書いてるな
未だに訂正ナシ
682 :デフォルトの名無しさん2011/11/11(金) 13:33:25.02
ここのところ Spring スレは閑古鳥が鳴いていたので、
こういう流れとはいえ、スレがにぎわうのはうれしい。
自分も勉強になるからもっとやってくれ
684 :デフォルトの名無しさん2011/11/11(金) 15:22:37.93
>>682
おまいが何か話題ふれよ
686 :デフォルトの名無しさん2011/11/11(金) 16:38:04.35
おまいか発端は!
でも俺もその辺の知識が整理できて良かったw
687 :デフォルトの名無しさん2011/11/11(金) 20:32:35.71
>665
> > CGLIBやjavassistで拡張されたものは元のクラスの継承クラスとしてClassLoaderに登録されるけど
>
> 全然違うんだがw
>
> 「継承クラスとしてClassLoaderに登録される」って
> いい加減なことを書かれたら困る

CGLIBでは「継承クラスとしてClassLoaderに登録される」ってことが
検証されてるから>665と同調した>668は訂正しろ
689 :デフォルトの名無しさん2011/11/11(金) 20:53:46.31
> CGLIBでは「継承クラスとしてClassLoaderに登録される」ってことが

それって単なる動的拡張でしょ
継承してサブクラスとして作られてるワケじゃないぞ
690 :デフォルトの名無しさん2011/11/11(金) 21:18:10.05
動的に継承構造を作り上げてるだけで、
そうやってできたものは、ちゃんとサブクラスになってる。
コード読めよ馬鹿。
693 :デフォルトの名無しさん2011/11/11(金) 21:58:03.63
>>690
CGLIBのコードまで読んだわけじゃないのに
雑魚が語るなよw
692 :デフォルトの名無しさん2011/11/11(金) 21:35:00.59
誰か、各単語(CGLIBとか)がどういったものなのか
簡単にまとめてくれ。
なにがなんなのかわからん。
696 :デフォルトの名無しさん2011/11/11(金) 22:21:56.10
「雑魚」が好きな口の悪い人は役に立つ説明してくれないおね
697 :デフォルトの名無しさん2011/11/11(金) 22:25:32.44
ところでspring標準はJdkDynamicAopProxyなんだが
何の設定もせずにapplicationContext.xmlを記述すると
これに強制選択になるのかな?

パフォーマンス上の理由などでCglib2AopProxyを使いたい場合に
明示的に指定することは出来るのかな?
700 :デフォルトの名無しさん2011/11/11(金) 23:18:04.71
ん?違うだろ
インターフェースが必要かどうかの設定であって
CGLIBを使用するかどうかの記述とは違うだろ

マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006
マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006