Not your computer? Use a private browsing window to sign in. Learn more
Not your computer? Use a private browsing window to sign in. Learn more
Interested in learning about the latest advancements in Android, App Engine, Chrome, Google Web Toolkit, OpenSocial, and more? Register to attend Google I/O, May 27-28 at Moscone West in San Francisco. Five years ago, Spring 1.0 brought Java dependency injection into the mainstream. Three years later, Google Guice 1.0 introduced annotation-based dependency injection and made Java programming a lit
JavaでAnnotationがついたクラスがあったら、それに対して処理したい場合は、Seasar2のコンポーネント自動登録で使っているように、ファイルシステムまたは Jar ファイルを全走査してクラスロードする方法もあります。 ファイルシステムまたは Jar ファイルを全走査してクラスロードしてください。が結論です。 Seasar だったら、 org.seasar.framework.util.ClassTraversal を読むべし。 でも、これは、Seasar2.3時代(3年前)の話で、技術としてはちょっと古い。 HOT deployなどと組み合わせると、リクエストのたびに全コンポーネントをデプロイする必要があるので、コンポーネントの数が増えると実用的には使えないのです。 そこで、考え出したのが、Seasar2のONDEMAND deploy。コンポーネントの定義を見に行って、あれば
なんか、面白そうなプロジェクトが始まりそうです。昨日付けでApache ComposerというプロジェクトがApacheに提案されました(提案なので、この後、Incubatorを通ってから正式プロジェクトなので先は長い)。 Apache Composer is an embeddable Inversion of Control (IoC) container for general components (Java initially). Its characterizing elements are that it is small, favors Dependency Injection (over other IoC variants) and tries to remain agnostic when it comes to the need for its components
「4月5月に作業するよ」って言って、本当に5月上旬に出てくるのは偉いですね。 リリースのアナウンス ダウンロード バージョンアップ内容 新しいアノテーションの追加 scoped beansのサポート*1 エンハンスの改善 Petclinicサンプルの追加 追加されたアノテーション @ExternalBean 親のコンテナ設定(Application Contextの設定)を引き継ぐ @ScopedProxy scoped proxyの指定。これ今まで使った事無くて知らなかったのですが、例えばシングルトンBeanがセッションスコープBeanの参照を持っている時に、直接参照を持つと1つしかinjectされない(だってシングルトンだから)という問題をProxyで解消するもののようですね。proxy scopeが指定されると、プロキシの参照を持つようになって、呼び出し時にスコープに応じて適切に参照
Guice vs. SpringJavaConfig (5) Conclusions Springの勝ちということになっていますね。ただ、だからGuiceがだめだと短絡的に思っては危険です。このアーティクルの著者は、@Injectを侵略的だとしてSpringのポイントにしていますが、これは人によって評価が分かれるところです。ただ、Spring派の人は、アノテーションが侵略的だと感じる傾向があるということは言えるかもしれません。だからSpringからEJB3へ移行する人も少ないのかも。EJB3もアノテーションでのDIですから。 後、AOPもSpringのポイントとしていますが、これもちょっと疑問。AspectJのポイントカットは、わかりにくいと思うんだけどなぁ。実際の案件で使っている人もわかりづらいといってました。 結局、Springな人がGuiceに移行するのは少ないのかもしれませんね。
Guice vs. Spring JavaConfig: A comparison of DI styles DIスタイルの比較:Guice 対 SpringのJavaコードコンフィグ http://jroller.com/page/habuma?entry=guice_vs_spring_javaconfig_a ■[翻訳]Guice vs. SpringJavaConfig (1) A Knight's tour of Guice ■[翻訳]Guice vs. SpringJavaConfig (2) Guice and AOP ■[翻訳]Guice vs. SpringJavaConfig (3) A Knight's tour of Spring JavaConfig ■[翻訳]Guice vs. SpringJavaConfig (4) Spring JavaConfig and
記事のタイトルみたいですが、1行で言えばそういう事です。今まで(Springに)無かったのが不思議なくらいですね。 作者はPOJOs IN ACTIONの著者Chris Richardson氏。 では、早速使ってみます。 基本サンプル まず下記サイトからダウンロード。 Arid POJOsのWebサイト Guiceに続きGoogle Codeです。ちなみにオープンソースなホストではCodehausが一番尖ったイメージでかっこ良いと思います。私の中で。どうでも良いですね。 今回試すサンプルのパッケージ構成 sample.arid SimpleBootStrap : 起動クラス SimpleClient : サービス呼び出し元 sample.arid.service SimpleService : サービスインタフェース SimpleServiceImple : サービス実装 実装の中身は例に
前回の「 動的プロキシとシリアライズ」エントリで紹介した通り,今回はその第一歩として,Javassistを使って動的プロキシを作成するための方法を紹介してみようと思う。 Javassistは,動的プロキシを作成するためのライブラリというよりは,バイトコードを操作するためのライブラリである。とは言っても,バイトコードに対する低レベルな処理は,Javassistに完全にお任せで大丈夫である。JavassistのAPIを使っている限りでは,バイトコードに関する知識はほぼ0で良い。Javassistを使うと,クラスファイルを作り出すこともできるし,ファイルとして生成しなくても,その場でClassオブジェクトとして利用することが可能である。生成したいクラスについて,親クラスやインタフェースを実装させることもできるし,フィールドやメソッドを追加することもできる。 では,さっそく例を見ていこう。まず,次
一般的なDIコンテナに大抵標準装備されている機能に,AOPがある。例えば,あるオブジェクトのあるメソッドが呼び出された際に,そのメソッドを処理する前に何らかの処理を挟み込む,などがAOPである。この機構を実現するためには,動的プロキシと呼ばれる機能が必要となる。 デザインパターンのProxyパターンは,あるオブジェクトと同等のインタフェースを持つProxyクラスを作成し,そのProxyクラスの中から本来のオブジェクトを呼びだすようにする。クライアントは本来のオブジェクトを触っている感覚なのだが,実際にはProxyクラスという「代理」のものが応答し,本来のオブジェクトを本当に呼び出すかどうかの判断とか,引数の内容を変更してしまったり,本来のオブジェクトからスローされる例外の処理をProxyクラス内でしてしまう,などの機能拡張をProxyクラスで行うというパターンである。クライアント側は,Pr
DIコンテナの設定情報,つまり「オブジェクトの依存関係」や「オブジェクトの設定内容」について,規約重視で暗黙のものとするか,ファイルに記述することで形式のものとするかは,個々人によって主張が異なるようである。何が何でも設定ファイルを書かない,あるいは,何が何でも設定ファイルを書く,といった「原理主義者」も多く,多くの場合は彼らの説明に「コンテキスト」が含まれない。よって,主張を聞いても,実際に何らかのDIコンテナを使う際をイメージした場合,その主張に沿う部分と沿わない部分が僕個人の中で発生し,完全に主張を受け入れられないことがよくある。 結局のところ「DIコンテナをどう使うか」(=上記で言ったコンテキスト)によって,暗黙知とするか形式知とするかを判断しなければならないと思っている。 DIコンテナの適用パターンとして代表的なものは,「View,Business Logic,Dao」といった3
SpringFramework 2.0.4で、ちょうどベンチマークに関係する部分のパフォーマンスチューニングを行ったとの事なので(詳しくは次のエントリ参照)、再度ベンチマークを行いました。Seasar2も最新版に入れ替えた上で、セットアップ処理コードを一部変更しています。 計測内容 バージョンは、Spring 2.0.4 / Guice 1.0 / Seasar2 2.4.12 インスタンス取得はAOP有りとAOP無しの両方を計測(前回は有りのみでしたが、今回は無しも計測しました) 全てプロトタイプ(毎回新しいインスタンスを取得) 取得したインスタンスの実行時間は、AOP有りのみ計測(AOP無しは変わらないはずなので) 留意して欲しい事項は前回の前置きにあります ベンチマーク結果 - get instance (NO AOP)- Spring: 24,336 creations/s Gui
SpringFrameworkのBeanのインスタンス取得が最大12倍速くなったそうです。 2.0.4リリースアナウンスより引用 Regarding the performance improvements, repeated creation of Spring bean instances is up to 12 times faster in this release than previous versions of Spring 2.0. AspectJ-based weaving performance has also increased by a significant factor. 2.0.3と2.0.4のベンチマーク比較 既にベンチマークのエントリでも速くなったと書きましたが、せっかくなので2.0.3と比較してみました。コードはGuiceベンチマークを流用してます。数
先日行われたJapan Springframework User Groupの勉強会でGuiceについてライトニングトークした資料を公開しました(アップロードありがとうございます>岩永さん)。 ブログを読まれている方には新しい情報は無いと思いますが、よろしければどうぞ。 発表資料のダウンロードはこちらから また、PowerPointを閲覧できない方や落とすのが面倒な方は、SlideShareでどうぞ。 SlideShareの資料※何故かFAQの"A"が"C"になっちゃってますが、それ以外は上記資料と同じ内容です。
1回目に続き、Spring Java Configurationを試してみたいと思います。今回はAOP。ちなみに付属のドキュメントにはAOPの説明が無かったので(さすがM1リリース)、テストケースを参考に試してみます。 Spring Java ConfigurationでのAOP定義 injectするServiceのインタフェースと実装クラス、そしてinjectされるClient実装クラスは、前回と同じものを使用します。AOPは既存の実装を変更せずに透過的に処理を追加(変更)できるのが売りですから、当然と言えば当然です。 で、前回のコンフィギュレーションクラスにAOPの定義を追加して、インターセプタも書いちゃいます。 @Configuration public class SpringConfigurationWithAOP { @Bean public Service service()
Guiceと Springframeworkの最大の違いはDIやAOPの設定をJavaコードで書くかXMLで書くかですが、実は(?)SpringでもJava コードによる設定の記述手段が用意されています*1。今回はその"Spring Java Configuration"を簡単に見てみます。なお、まだマイルストーン1なので、用意されているというよりは準備されている、もしくは計画中と言う方が適切かも知れず、今回試す内容も今後のリリースで色々変わる可能性があります。 Spring Java Configurationの最も基本的なサンプル まずinjectされるサービス。インタフェースとその実装です。 public interface Service { String getResponse(String msg); } public class ServiceImpl implements
Level up your Java™ code With Spring Boot in your app, just a few lines of code is all you need to start building services like a boss. New to Spring? Try our simple quickstart guide. Most [of our] services today are all based on Spring Boot. I think the most important thing is that [Spring] has just been very well maintained over the years...that is important for us for the long term because we d
S2標準dicon Seasar2.4のサイトに自動的に切り替わらない場合は以下のリンクをクリックしてください。 S2標準dicon
利用者向け情報 ニュース & Wiki プロダクト一覧 メーリングリスト Eclipseプラグイン Mavenリポジトリ ライセンス 各種リソース イベントサイト ファウンデーションサイト 開発者向け情報 SeasarWiki ソースコードリポジトリ 課題追跡 継続的ビルド 開発者ログイン サーバチームサイト Java プロジェクト S2Container.Java Seasar2 (S2Container) Presentation.Java Cubby Mayaa mobylet S2BlazeDS S2Flex S2JSF S2OpenAMF S2Portlet S2Struts SAStruts Teeda Ymir Persistence.Java DBFlute Doma Kuina S2Dao S2Hibernate S2JDBC S2OpenJPA S2TopLink Co
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く