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 }
结果就是你想要的...
平时用得最多,估计属性注入最方便了。但是也有特殊情况,一切看项目需要来做了。。。
下一篇研究一下绑定的几种方式吧。。。