SlideShare a Scribd company logo
1 of 14
JSUG 第 2 回ライトニングトーク Google Guice モンスター・ラボ 稲村創( so.inamura@monstar-lab.com) 音楽配信サイト: http://monstar.fm ブログ: http:// d.hatena.ne.jp/arumani /
Guice とは ,[object Object],[object Object],[object Object],[object Object]
Guice の特徴 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3ステップ DIサンプル ,[object Object],public class Client { @Inject private Service service; @Inject public Client(Service service) { this.service = service; } @Inject public void injectMethod(Service service) { this.service = service; }  }
3ステップ DIサンプル ,[object Object],public class MyModule extends AbstractModule { protected void configure() { // Service という型があったら、 ServiceImpl クラスを inject する bind( Service.class ).to( ServiceImpl.class ); } }
3ステップ DIサンプル ,[object Object],public static void main(String[] args) { Injector injector = Guice.createInjector(new MyModule()); Client client =   injector.getInstance(Client.class); client.execute(); }   ⇒ DI 済インスタンス取得!
3ステップ AOPサンプル ,[object Object],// AOP Alliance のインタフェースを使ったインターセプタを実装 public class LoggingInterceptor  implements MethodInterceptor  { public Object invoke(MethodInvocation methodInvocation) throws Throwable { System.out.println("AOP から出力 "); //  本来の処理を実行 return methodInvocation.proceed(); } }
3ステップ AOPサンプル ,[object Object],protected void configure() { bind(Service.class).to(ServiceImpl.class); bindInterceptor( //  対象クラス(この例はパッケージ一括指定) inPackage(Service.class.getPackage()) //  対象メソッド(この例は全メソッド指定) , any() //  インターセプタ , new LoggingInterceptor()); }
3ステップ AOPサンプル ,[object Object],public static void main(String[] args) { Injector injector = Guice.createInjector(new MyModule()); Client client =  injector.getInstance(Client.class); client.execute(); }   ⇒ weave 済インスタンス取得!
Spring連携サンプル // Spring コンテナ作成 ApplicationContext context =  new ClassPathXmlApplicationContext(&quot;context.xml&quot;); Injector injector = Guice.createInjector(new AbstractModule() { protected void configure() { bind(BeanFactory.class).toInstance(context);  // context.xml に //  <bean id= “ foo ”  class=“ FooImpl ” /> //  と書いてあるとして bind( Foo.class ).toProvider(fromSpring( Foo.class,  “foo&quot; ) ); } });
FAQ ,[object Object],[object Object],[object Object],[object Object]
FAQ ,[object Object],[object Object],[object Object]
リンク ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object]

More Related Content

Viewers also liked

NRKbeta - Webdagene 2008
NRKbeta - Webdagene 2008NRKbeta - Webdagene 2008
NRKbeta - Webdagene 2008Oyvind Solstad
 
シックス・アパート・フレームワーク
シックス・アパート・フレームワークシックス・アパート・フレームワーク
シックス・アパート・フレームワークTakatsugu Shigeta
 
I Want More Traffic Now!
I Want More Traffic Now!I Want More Traffic Now!
I Want More Traffic Now!Karim Gargum
 
Lug Roma3 Corso Linux Base
Lug Roma3   Corso Linux BaseLug Roma3   Corso Linux Base
Lug Roma3 Corso Linux Basefosk
 
Portfolio interoperability progress in the UK
Portfolio interoperability progress in the UKPortfolio interoperability progress in the UK
Portfolio interoperability progress in the UKSimon Grant
 
Deprivileging The Digital
Deprivileging The DigitalDeprivileging The Digital
Deprivileging The DigitalTony McNeill
 
Polygons
PolygonsPolygons
Polygonspotc
 
Mashups - webforum 2009 (Øyvind Solstad)
Mashups - webforum 2009 (Øyvind Solstad)Mashups - webforum 2009 (Øyvind Solstad)
Mashups - webforum 2009 (Øyvind Solstad)Oyvind Solstad
 
Platfrom for community-based solutions
Platfrom for community-based solutionsPlatfrom for community-based solutions
Platfrom for community-based solutionsLatte Media
 
Durmak Yok Yolsuzluga Devam
Durmak Yok Yolsuzluga DevamDurmak Yok Yolsuzluga Devam
Durmak Yok Yolsuzluga Devammillitrk
 

Viewers also liked (20)

NRKbeta - Webdagene 2008
NRKbeta - Webdagene 2008NRKbeta - Webdagene 2008
NRKbeta - Webdagene 2008
 
シックス・アパート・フレームワーク
シックス・アパート・フレームワークシックス・アパート・フレームワーク
シックス・アパート・フレームワーク
 
I Want More Traffic Now!
I Want More Traffic Now!I Want More Traffic Now!
I Want More Traffic Now!
 
Lug Roma3 Corso Linux Base
Lug Roma3   Corso Linux BaseLug Roma3   Corso Linux Base
Lug Roma3 Corso Linux Base
 
Portfolio interoperability progress in the UK
Portfolio interoperability progress in the UKPortfolio interoperability progress in the UK
Portfolio interoperability progress in the UK
 
Deprivileging The Digital
Deprivileging The DigitalDeprivileging The Digital
Deprivileging The Digital
 
Quote Presentation2
Quote Presentation2Quote Presentation2
Quote Presentation2
 
building BRIDGES
building BRIDGESbuilding BRIDGES
building BRIDGES
 
Future Shapers.Ppt
Future Shapers.PptFuture Shapers.Ppt
Future Shapers.Ppt
 
PR30
PR30PR30
PR30
 
Guimãraes (Portugal)
Guimãraes (Portugal)Guimãraes (Portugal)
Guimãraes (Portugal)
 
Polygons
PolygonsPolygons
Polygons
 
Mashups - webforum 2009 (Øyvind Solstad)
Mashups - webforum 2009 (Øyvind Solstad)Mashups - webforum 2009 (Øyvind Solstad)
Mashups - webforum 2009 (Øyvind Solstad)
 
Ma ed 2014
Ma ed 2014Ma ed 2014
Ma ed 2014
 
A/B Testing 101
A/B Testing 101A/B Testing 101
A/B Testing 101
 
Platfrom for community-based solutions
Platfrom for community-based solutionsPlatfrom for community-based solutions
Platfrom for community-based solutions
 
Oporto
OportoOporto
Oporto
 
No phai tra 4
No phai tra   4No phai tra   4
No phai tra 4
 
Durmak Yok Yolsuzluga Devam
Durmak Yok Yolsuzluga DevamDurmak Yok Yolsuzluga Devam
Durmak Yok Yolsuzluga Devam
 
NCE Tourism Bergen
NCE Tourism BergenNCE Tourism Bergen
NCE Tourism Bergen
 

Recently uploaded

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Recently uploaded (9)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

Google Guice - JSUG第2回勉強会ライトニングトーク

  • 1. JSUG 第 2 回ライトニングトーク Google Guice モンスター・ラボ 稲村創( so.inamura@monstar-lab.com) 音楽配信サイト: http://monstar.fm ブログ: http:// d.hatena.ne.jp/arumani /
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Spring連携サンプル // Spring コンテナ作成 ApplicationContext context = new ClassPathXmlApplicationContext(&quot;context.xml&quot;); Injector injector = Guice.createInjector(new AbstractModule() { protected void configure() { bind(BeanFactory.class).toInstance(context); // context.xml に // <bean id= “ foo ” class=“ FooImpl ” /> // と書いてあるとして bind( Foo.class ).toProvider(fromSpring( Foo.class, “foo&quot; ) ); } });
  • 11.
  • 12.
  • 13.
  • 14.