guice基本使用,三种注入方式(二)

mac2022-06-30  58

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

最新回复(0)