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 @Singleton12 public class TestInjection {13 14 @Inject15 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 mingge10 *11 */12 @Singleton13 public class TestInjection {14 15 private Dao dao;16 17 @Inject18 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 mingge10 *11 */12 @Singleton13 public class TestInjection {14 15 private Dao dao;16 17 @Inject18 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 }
结果就是你想要的...
平时用得最多,估计属性注入最方便了。但是也有特殊情况,一切看项目需要来做了。。。
下一篇研究一下绑定的几种方式吧。。。