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 }
結果就是你想要的...
平時用得最多,估計屬性注入最方便了。但是也有特殊情況,一切看項目需要來做了。。。
下一篇研究一下綁定的幾種方式吧。。。
