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);
    }
}
时间: 2024-11-09 01:08:50

Guice 学习(七)常量和属性的注入( Constant and Property Inject)的相关文章

Guice 学习(六)使用Provider注入服务( Provider Inject Service)

1.定义接口 package com.guice.providerInject; import com.google.inject.ProvidedBy; public interface Service { public void execute(); } 2.定义实现类 package com.guice.providerInject; public class OneService implements Service { @Override public void execute() {

springMVC3学习(七)--Interceptor拦截器

Spring为我们提供了:org.springframework.web.servlet.HandlerInterceptor接口, org.springframework.web.servlet.handler.HandlerInterceptorAdapter适配器, 实现这个接口或继承此类,能够很方便的实现自己的拦截器. 有下面三个方法: Action之前运行 public boolean preHandle(HttpServletRequest request, HttpServletR

Swift学习笔记十:属性

1.存储属性       1. 作为特定类或结构实例的一部分,存储属性存储着常量或者变量的值.存储属性可分为变量存储属性(关键字var描述)和常量存储属性(关键字let描述). struct student{ let name = "" var score = 0 } let a = student(name:"小笨狼",score:96)           注意:                ① 定义储存属性时,需要为每一个属性定义一个默认值.在初始化的时候,

CorePlot学习七---坐标轴的详细分析

先看代码,有标注,很详细,看看是如何设定x.y轴的可视范围.移动范围.已经如何确定原点的位置的.还有就是如何固定坐标轴!!! //坐标轴的初始化 -(void)axesInit { // Setup plot space: 设置一屏内可显示的x,y量度范围 CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)[xyGraph defaultPlotSpace]; plotSpace.delegate = self; plotSpace.allowsUser

Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar

web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用,提供了一个QuartzInitializerServlet和一个QuartzInitializerListener,用于在加载web应用时,对quartz进行初始化. <servlet> <servlet-name> QuartzInitializer </servlet-na

swift基础学习(04)[运算符、属性、属性观察器、方法、下脚标本、继承、构造器]

//swift恒等运算符 //===恒等,不等!== //运用这两个运算符检测两个常量或者变量是否引用同一个实例 //"等价于"表示两个类类型(class type)的常量或者变量引用同一个类实例. //等于"表示两个实例的值"相等"或"相同",判定时要遵照设计者定义的评判标准,因此相对于"相 等"来说,这是一种更加合适的叫法. //类和结构体的选择 //属性的存储只能是类或者是结构体 //存储属性:变量存储属性va

struts的action属性自动注入原理

拦截器+反射,就是在request到达后台处理程序之间,加一层拦截器,截获到request对象,就可以通过 request.getParameters()获取请求参数,然后通过请求URL可以得知你要请求的是哪个action类的哪个方法,然后你 action中定义了跟request请求参数名称同名的属性,并提供get set,那么通过java反射机制调用action类的响应属性的set方 法就可以把参数值设置进去,也就是所谓的“action属性自动注入”.

day38 13-Spring的Bean的属性的注入:SpEL注入

Spring2.5提供了名称空间p注入属性的方式,Spring3.几提供了SpEL属性注入的方式. <?xml version="1.0" encoding="UTF-8"?> <!-- 别去schema,schema是文件,本地的文件,你得引那个头 --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://

day38 10-Spring的Bean的属性的注入

后处理bean,如果是返回bean,那么什么都不做直接把这个类原封不动地给你返回回去. 在它执行一些逻辑方法的时候对它进行逻辑增强,比如说进行时间监控,权限管理,日志的记录等等. 要做肯定是对正常的类增强才可以,因为正常你就调用这个类的add或者find()方法了. 增强的方法:继承.装饰者模式.动态代理. 装饰者的缺点是:如果你的接口中的方法太多,而你只需要增强其中的某一个方法,那你这个类里面就得写特别特别多的方法.而且其他的方法都是原封不动地给人家返回的. 动态代理:最灵活.对这个类生成一个