ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Spring

Seasar2系のノウハウをSpringコミュニティに提供

私がSlimというプロジェクトをはじめるということは、Seasarカンファレンスで発表しました。 http://itpro.nikkeibp.co.jp/article/NEWS/20080524/303949/ もともとSlimのコンテナ部分は、Seasar2からもってくるつもりでしたが、最近、NTTデータやCTCのフレ…

パフォーマンス比較4

第四弾として、AOPのパフォーマンスを測定してみました。Helloという文字列を返すInterceptorが仕掛けられたメソッドを10,000,000回呼び出すものです。Seasar2のバージョンは、2.3.7、Springは1.2.6です。これは、この後最新版でも比較します。 結果(の平均)は…

パフォーマンス比較3

第三弾として、2000個のオブジェクトを登録して、1000回DIを型による自動(autowiring=byType)で行うやつを測定してみました。Seasar2のバージョンは、2.3.7、Springは1.2.6です。これは、この後最新版でも比較します。 結果(の平均)は、Seasar2が150ms、Springが…

パフォーマンス比較2

第二弾として、2000個のオブジェクトを登録して、1000回DIをマニュアル(autowireなし)で行うやつを測定してみました。Seasarのバージョンは、2.3.7、Springは1.2.6です。これは、この後最新版でも比較します。 結果(の平均)は、Seasar2が150ms、Springが4000ms。…

パフォーマンス比較

第一弾として、1万個のオブジェクトを登録して、なんのDIも行わず、単に取り出すやつを測定してみました。Seasarのバージョンは、2.3.7、Springは1.2.6です。これは、この後最新版でも比較します。 結果(の平均)は、Seasar2が350ms、Springが21000ms。正直この段…

Spring AOP

ひさびさにソース見てみたら、cglibを使ってコンストラクタで引数がある場合も、処理できるようになっているみたい。 -> id:koichikさん。 気になったのは、インスタンスが要求されるたびに、新たなクラスをweavingしているように見えるので、インスタンスが…

DIContainer比較

たまには、まじめにSpringと比較してみましょう。 Seasar2ではOGNLの導入により、Springのvalueタグ、refタグといったタグを書く量が増えることやPropertyEditorの登録といったことをする必要がありません。 Seasar2の型によるautoBindingは、interfaceの型…

Inner Bean

Spring FrameworkのXMLでInner Beanの定義が可能に http://www.almaer.com/blog/archives/000340.html DTDでは、前からできそうに見えたけど、1.1からなのか。 ネストしたInner Beanって使えるのかな。 Method InjectionっていうからS2と同じになったのかと…

SpringにAspectJを統合

SpringにAspectJを統合 本家のSpringframeworkのメーリングリストにて、ロッドジョンソン氏による、SpringとAspectJの統合についてのメールが流れた。 SpringのAOPは使いにくいと思っていたので、AspectJとの組み合わせは、 良いアイディアだと思う。 ただ、…

Spring Integration in HiveMind

http://howardlewisship.com/blog#108610478523561151 HiveMindからSpringのBeanにアクセスできるようにするって話。 HiveMindはSpringとAvalonにはさまれて、苦しいと見た。 タペのサービス管理コンテナって感じになるのかな。

S2の利点(Springと比べて)

[そのほか]S2の利点って 他と比べた利点ってな〜に?なんか超明快にこれ!ってのが一つ欲しいな〜そしたらJooで正式採用の予感 それは重要だがんばって書いてみます。(笑) 対象は、ダイコン with AOPの部分 Dependency Injectionのやり方に制限がなく、直感…

Struts対応

springのstruts対応だとactionを管理させたりするみたいだけど、それとは違うんですね。 Springはなぜか直接にはStrutsに対応してないんですよね。 あれだけ、普段つかわねーだろこんなの(失言)ってのを Fatにサポートしているのに。 struts-springはここ ht…

JDBCどっちのコードショー

このRowCallbackHandlerはResultSetを扱うためのもので,結果セットの行ごとにJdbcTemplateからコールバックされる,次のメソッドを持っています. void processRow(ResultSet rs) 引数でResultSetを渡されますが,そのnext()を呼び出すのはJdbcTemplateの役…

S2とSpringの違い

は良く聞かれるテーマだと思ってますが、 S2.0.6とSpring1.0.1のAOPのパッケージの作りを見れば その違いは一目瞭然だと思います。 どちらも、AOP Allianceに準拠していて、基礎となるAPIは 同じなためです。 あくまでも個人的な感想ですがSpringは複雑すぎ…

JTAとコネクションプール

そんなわけで,SpringはDataSource#getConnection()を直接使わず,代わりにDataSourceUtils#getConnection(DataSource)を使いましょう,ということになってます.こいつがスレッドコンテキストを提供するわけです.うーん,なんだかなぁー. S2の場合はトラ…

ThrowsInterceptor

使えないSpringのThrowsAdviceにかわりに S2のThrowsInterceptorを使えば、Springでもきちんと例外を AOPで扱えるように(たぶん)なります。 #例外処理をS2用からSpring用に変えてます。 public abstract class ThrowsInterceptor implements MethodIntercep…

ネストしたAspect

もうひとつはまってしまったことは,Aspectが適用されるのは,AOP Proxyを経由したメソッド呼び出しの場合だけということです.当然ですよね.でもはまっちゃいました.心より恥じる.今回テスト用に作ったFooとBarは,意味もなく自分のクラス(インスタンス)…

AOP比較

まさたかさんの日記と koichikさんの日記でちょうどAOPが取り上げられています。 Bean至上主義のSpringとAspectはAspectとして別途定義したほうが わかりやすいと考えるS2との違いが良く出ていると思います。 個人的には、簡単で直感的な方がいいと思ってま…

Springとの組み合わせ

S2JTA,S2DBCPはS2Containerに依存していないので、 Spring上でも(たぶん)動きます。 Springのトランザクション機能とも(たぶん)連動できます。 だれもやらないとは思いますが。(^^;

Spring Framework入門

id:koichikさんのところで、Spring Framework入門をやっていて かなりおすすめです。 それに対応するS2の機能紹介みたいなものもやってみたいと思ってます。

IoC比較

http://javatapestry.blogspot.com/ でやってた、SpringとHiveMindの比較をS2Containerでもやってみます。 app-config.xml 上記は、Advice(Interceptor)を直接コンポーネントに埋め込む例ですが、 Adviceを他のコンポーネントと共有する場合は、こうもかけま…

XMLでコンポーネントを定義する場合には、 文字列をオブジェクトやプリミティブ型に 何らかの方法で変換する必要があります。 Springでは、PropertyEditorを使って変換を行って います(らしい)。S2Containerは、式言語(Sel)を 使って変換しています。 例えば…

トランザクション制御

Java World 2月号の記事で、 SessionBeanでCMTを使う場合、複数のSessionBeanを呼び出しを またがるようなトランザクション制御は行えない。なんて記事をみかけたので、コメントしときます。 記事に対する批判ではなく、もし誤解している人がいれば、 誤解が…

前は、設定ファイルは、クラスごとに持つほうが良いかもと 書いたんですが、その後、SpringやPicoのいろいろな ドキュメントやサンプルを読み、ある程度、関連のあるオブジェクトは、 1つの設定ファイルにまとまっていたほうが 見通しが良いなという考えに変…

seasar-user MLの方にも書いたんですが、 SpringのBeanの設定ファイルって直ぐに肥大化するような気がします。 クラスごとにbeanタグを持たせると良いような気がしてます。 Picoのほうが、私の目に付くところでは人気みたい。