Guice 学习常量和属性的注入( Constant and Property Inject)

Posted yutingliuyl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Guice 学习常量和属性的注入( Constant and Property Inject)相关的知识,希望对你有一定的参考价值。

1、常量注入方式

package com.guice.ConstantInjectDemo;

import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Module;
import com.google.inject.name.Named;
import com.google.inject.name.Names;

/*
 *  绑定常量
 */
public class ConstantInjectDemo {
    @Inject
    @Named("a")
    private int a;

    public static void main(String[] args) {
        ConstantInjectDemo instance = Guice.createInjector(new Module() {

            @Override
            public void configure(Binder binder) {
                // 将数值22绑定到常量值a上
                binder.bindConstant().annotatedWith(Names.named("a")).to(22);

            }
        }).getInstance(ConstantInjectDemo.class);
        System.out.println(instance.a);// 22
    }
}

除了能够绑定int外。在ConstantBindingBuilder类中还能够绑定其他的基本类型。
com.google.inject.binder.ConstantBindingBuilder.to(String)
com.google.inject.binder.ConstantBindingBuilder.to(long)
com.google.inject.binder.ConstantBindingBuilder.to(boolean)
com.google.inject.binder.ConstantBindingBuilder.to(double)
com.google.inject.binder.ConstantBindingBuilder.to(float)
com.google.inject.binder.ConstantBindingBuilder.to(short)
com.google.inject.binder.ConstantBindingBuilder.to(char)

2、属性注入方式

package com.guice.ConstantInjectDemo;

import java.util.Properties;

import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Module;
import com.google.inject.name.Named;
import com.google.inject.name.Names;

/**
 * TODO : 绑定Properties 除了能够绑定基本类型外。还能够绑定一个Properties到Guice中。当然了,因为Properties本质上时一个Map<String,String>, 因此Guice也同意绑定一个Map<String,String>。
 * 
 * @author E468380
 */
public class PropertiesInjectDemo {
    @Inject
    @Named("csdn")
    private String csdn;

    public static void main(String[] args) {
        PropertiesInjectDemo instance = Guice.createInjector(new Module() {

            @Override
            public void configure(Binder binder) {
                Properties properties = new Properties();
                properties.setProperty("csdn", "www.csdn.com");
                Names.bindProperties(binder, properties);
            }
        }).getInstance(PropertiesInjectDemo.class);
        System.out.println(instance.csdn);
    }
}

以上是关于Guice 学习常量和属性的注入( Constant and Property Inject)的主要内容,如果未能解决你的问题,请参考以下文章

TestNG 中使用 Guice 来进行依赖注入

Google 开源的依赖注入库,比 Spring 更小更快!

Guice源码学习基本原理

Guice学习 ------- 快速入门

注入 Guice 的 DAO 应该是单例吗?

使用 Guice 注入通用实现