zoukankan      html  css  js  c++  java
  • 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);
        }
    }
    
  • 相关阅读:
    zookeeper、hbase集成kerberos
    hdfs、yarn集成kerberos
    kerberos(一) 详解
    Kerberos(一) 安装
    kerberos 配置错误记录
    javascript自定义滚动条插件,几行代码的事儿
    javascript,css延迟加载器
    DOM: 如何获取元素下的第一个子元素
    自定义标签的可用性
    (转)也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离)
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7259857.html
Copyright © 2011-2022 走看看