zoukankan      html  css  js  c++  java
  • 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 }

    结果就是你想要的...

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

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

     

  • 相关阅读:
    酷狗大数据平台架构是如何重构的
    分层架构,前后端分离有啥坏处?
    Redis快速入门及应用
    Kafka不只是个消息系统
    提高代码质量:如何编写函数
    jquery 回车事件
    程序员的薪资是如何确定出来的?
    HTTP 错误 500.21
    制作手机浏览器显示格式的HTML页面
    操作必须使用一个可更新的查询。
  • 原文地址:https://www.cnblogs.com/huzi007/p/5798264.html
Copyright © 2011-2022 走看看