• 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);
        }
    }
    
  • 相关阅读:
    SQL 2005的ROW_NUMBER()实现分页的功能
    UML建模工具集
    挽救崩溃的WinXP操作系统四招
    16个经典面试问题回答思路
    自动关闭弹出式窗口
    在winform中嵌入Flash(swf)的方法及常见问题的解决
    C#获取安装程序所在的路径
    转载:C#操作注册表
    C#实现Dll(OCX)控件自动注册的两种方法
    转载:C#创建和修改注册信息
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7259857.html
Copyright © 2020-2023  润新知