• 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 }

    结果就是你想要的...

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

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

     

  • 相关阅读:
    Java学习——文件和IO流
    Java多线程——ThreadLocal类的原理和使用
    Java多线程——线程八锁案例分析
    Django 模版语法 一
    Django 命令行调用模版渲染
    Django 使用 locals() 函数
    Django 加载 app 中的urls
    Django 传递额外参数及 URL别名
    Django 无名参数与有名参数
    Django 项目中添加静态文件夹
  • 原文地址:https://www.cnblogs.com/huzi007/p/5798264.html
Copyright © 2020-2023  润新知