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 }

结果就是你想要的...

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

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

 

原文地址:https://www.cnblogs.com/huzi007/p/5798264.html