zoukankan      html  css  js  c++  java
  • guice基本使用,三种注入方式(二)

    guice提供了强大的注入方式。

    1.属性注入

    2.构造器注入

    3.set方式注入

    1.属性注入:

     1 package com.ming.user.test;
     2 
     3 import com.google.inject.Inject;
     4 import com.google.inject.Singleton;
     5 
     6 /**
     7  * guice 不同的注入方式
     8  * @author mingge
     9  *
    10  */
    11 @Singleton
    12 public class TestInjection {
    13 
    14     @Inject
    15     private Dao dao;
    16     
    17     void test(){
    18         
    19         dao.testGuice();
    20     }
    21     
    22 }

    2.构造方法注入

     1 package com.ming.user.test;
     2 
     3 import com.google.inject.Inject;
     4 import com.google.inject.Singleton;
     5 
     6 /**
     7  * guice 不同的注入方式
     8  * 
     9  * @author mingge
    10  *
    11  */
    12 @Singleton
    13 public class TestInjection {
    14 
    15     private Dao dao;
    16 
    17     @Inject
    18     public TestInjection(Dao dao) {
    19         this.dao = dao;
    20     }
    21 
    22     void test() {
    23 
    24         dao.testGuice();
    25     }
    26 
    27 }

    3.set方式注入

     1 package com.ming.user.test;
     2 
     3 import com.google.inject.Inject;
     4 import com.google.inject.Singleton;
     5 
     6 /**
     7  * guice 不同的注入方式
     8  * 
     9  * @author mingge
    10  *
    11  */
    12 @Singleton
    13 public class TestInjection {
    14 
    15     private Dao dao;
    16 
    17     @Inject
    18     public void setDao(Dao dao) {
    19         this.dao = dao;
    20     }
    21 
    22 
    23     void test() {
    24 
    25         dao.testGuice();
    26     }
    27 
    28 }

    当然,在我们的module中需要绑定这个TestInjection这个类才可以用哦.

     1 package com.ming.user.test;
     2 
     3 import com.google.inject.AbstractModule;
     4 
     5 public class TestModule extends AbstractModule{
     6 
     7 
     8     @Override
     9     protected void configure() {
    10         bind(Dao.class).to(DaoImpl.class);
    11         bind(TestDaoInjection.class);
    12     }
    13 }

    测试代码如下:

     1 package com.ming.user.test;
     2 
     3 import com.google.inject.Guice;
     4 import com.google.inject.Injector;
     5 import com.google.inject.Module;
     6 
     7 
     8 public class Test {
     9     
    10     public static void main(String[] args) {
    11          Injector injector = Guice.createInjector(new TestModule());  
    12          TestDaoInjection test = injector.getInstance(TestDaoInjection.class);  
    13          test.test();
    14     }
    15 }

    结果就是你想要的...

    平时用得最多,估计属性注入最方便了。但是也有特殊情况,一切看项目需要来做了。。。

    下一篇研究一下绑定的几种方式吧。。。

     

  • 相关阅读:
    url 转码 urlencode和 urldecode
    通过启动函数定位main()函数
    关于溢出的总结1
    http://ctf.bugku.com/challenges#Mountain%20climbing:bugku--Mountain-Climbing
    http://ctf.bugku.com/challenges#love:bugku--love
    http://ctf.bugku.com/challenges#%E9%80%86%E5%90%91%E5%85%A5%E9%97%A8:bugku--逆向入门
    http://ctf.bugku.com/challenges#Timer(%E9%98%BF%E9%87%8CCTF):Bugku——Timer(阿里CTF)
    http://ctf.bugku.com/challenges#%E6%B8%B8%E6%88%8F%E8%BF%87%E5%85%B3--游戏过关
    填坑专记-手脱FSG壳

  • 原文地址:https://www.cnblogs.com/huzi007/p/5798264.html
Copyright © 2011-2022 走看看