1. 程式人生 > >Guice 學習(七)常量和屬性的註入( Constant and Property Inject)

Guice 學習(七)常量和屬性的註入( Constant and Property Inject)

-a ret roc build ann class google mes ota

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)