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);
        }
    }
    
  • 相关阅读:
    Idea中Module is not specified解决办法
    Navicat 导入数据时报Incorrect datetime value: '0000-00-00 00:00:00.000000' 错误
    SQL Server错误18456,window身份验证登录失败解决办法
    Linq
    web.config配置数据库连接
    $.ajax()方法详解
    将一张图片上传到指定的文件夹,然后在窗体上的PictrueBox控件中显示出来
    winform中picturebox自适应图片大小
    C#中产生SQL语句的几种方式
    [转]ORACLE触发器详解
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7259857.html
Copyright © 2011-2022 走看看