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 }

結果就是你想要的...

平時用得最多,估計屬性注入最方便了。但是也有特殊情況,一切看項目需要來做了。。。

 

下一篇研究一下綁定的幾種方式吧。。。

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM