Google Guice提供Annotation Binding,可以使用注解来对依赖进行绑定并同时进行赋值。
一。@DriverClassName
package com.template.guice;
import com.google.inject.BindingAnnotation;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 11-8-6
* Time: 下午3:23
*/
@BindingAnnotation
@Target({ METHOD, CONSTRUCTOR, FIELD })
@Retention(RUNTIME)
public @interface DriverClassName {
}
二。@Username
package com.template.guice;
import com.google.inject.BindingAnnotation;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 11-8-6
* Time: 下午3:23
*/
@BindingAnnotation
@Target({ METHOD, CONSTRUCTOR, FIELD })
@Retention(RUNTIME)
public @interface Username {
}
三。@Url
package com.template.guice;
import com.google.inject.BindingAnnotation;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 11-8-6
* Time: 下午3:23
*/
@BindingAnnotation
@Target({ METHOD, CONSTRUCTOR, FIELD })
@Retention(RUNTIME)
public @interface Url {
}
四。@Password
package com.template.guice;
import com.google.inject.BindingAnnotation;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 11-8-6
* Time: 下午3:23
*/
@BindingAnnotation
@Target({ METHOD, CONSTRUCTOR, FIELD })
@Retention(RUNTIME)
public @interface Password {
}
五。DBConnection
package com.template.guice;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 11-8-6
* Time: 下午3:28
*/
@Singleton
public class Connection {
@Inject
@DriverClassName
private String driverClassName;
@Inject
@Url
private String url;
@Inject
@Username
private String username;
@Inject
@Password
private String password;
public String driverClassName() {
return driverClassName;
}
public String url() {
return url;
}
public String username() {
return username;
}
public String password() {
return password;
}
}
六。ConnectionModule
package com.template.guice;
import com.google.inject.Binder;
import com.google.inject.Module;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 11-8-6
* Time: 下午3:32
*/
public class ConnectionModule implements Module {
@Override
public void configure(Binder binder) {
binder.bind(String.class).annotatedWith(DriverClassName.class).toInstance("com.mysql.jdbc.Driver");
binder.bind(String.class).annotatedWith(Url.class).toInstance("jdbc:mysql://localhost:3306/demo");
binder.bind(String.class).annotatedWith(Username.class).toInstance("root");
binder.bind(String.class).annotatedWith(Password.class).toInstance("root");
}
}
七。Main
package com.template.guice;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 11-8-6
* Time: 下午3:36
*/
public class Main {
public static final Logger logger = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
Module module = new ConnectionModule();
Injector injector = Guice.createInjector(module);
Connection instance1 = injector.getInstance(Connection.class);
Connection instance2 = injector.getInstance(Connection.class);
logger.info("instance1 is " + instance1);
logger.info("instance2 is " + instance2);
logger.info("instance1's hashcode is " + instance1.hashCode());
logger.info("instance2's hashcode is " + instance2.hashCode());
logger.info("driverClassName is " + instance1.driverClassName());
logger.info("url is " + instance1.url());
logger.info("username is " + instance1.username());
logger.info("password is " + instance1.password());
}
}
八。运行结果
- 大小: 17.9 KB
分享到:
相关推荐
标题《Learning Google Guice》指出本文档是关于学习谷歌Guice的,Guice是由谷歌开发的一个轻量级的依赖注入框架,其核心理念是简化Java应用程序中组件的创建和组装过程,通过依赖注入提高模块间的解耦,从而使得...
"google Guice 1.0 用户指南 中文" Guice 是一个超轻量级的、下一代的、为 Java 5 及后续版本设计的依赖注入容器。它可以帮助 Java 企业应用开发社区解决连接对象方面的问题,例如 Web 应用如何访问中间层服务、...
"DI容器框架Google Guice与Spring框架的区别" 这个标题表明我们要探讨的是两种不同的依赖注入(Dependency Injection,简称DI)容器——Google Guice和Spring框架之间的差异。DI是一种设计模式,它帮助开发者在对象...
Google Guice 这个高效的与Spring类似的依赖注入框架; MyBatis配置和使用; Google Guice与MyBatis集成,支持注解事务,简单的无法想象; Mybatis与mysql集成;实现发送邮件轮询; 源码是个web项目,里面有数据库的...
**Google Guice**,全称为Google Injection,是一个轻量级的依赖注入框架,它通过注解(Annotations)来实现对象的自动装配,简化了Java应用的构造和管理。Guice的核心理念是帮助开发者摆脱手动创建对象和管理对象...
Guice的核心概念包括模块(Module)、注解(Annotation)和绑定(Binding)。模块是Guice配置的载体,它定义了哪些类将被实例化以及它们之间的依赖关系。开发者可以创建自定义模块,并通过`@Provides`注解的方法来...
Google Guice,全称为GoogleInject,是一个轻量级的依赖注入框架,由Google开发并开源。Guice的目标是简化Java应用程序的构造和管理,通过自动装配对象依赖关系,让开发者可以专注于业务逻辑而不是对象的创建和组装...
Google Guice是一个轻量级的依赖注入框架,由Google开发并维护,主要用于简化Java应用程序的构建和管理。依赖注入(Dependency Injection,简称DI)是一种设计模式,它可以帮助开发者减少代码间的耦合,提高代码的可...
### Google Guice 用户手册知识点详解 #### 一、Google Guice 概览 **Google Guice** 是一个轻量级的 Java 依赖注入容器,它为 Java 5 及以上版本提供支持。与传统的对象创建方式相比,Guice 通过减少样板代码...
### Google Guice: 敏捷轻量级依赖注入框架详解 #### 一、引言与背景 在现代软件开发中,依赖注入(Dependency Injection, DI)已成为构建灵活、可维护和可测试应用程序的重要手段之一。Google Guice作为一款100%...
Guice是Google开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC)。Guice非常小而且快。Guice是类型安全的,它能够对构造函数,属性,方法(包含任意个参数的任意方法,而不仅仅是setter...
Guice的核心组件包括模块(Module)、注解(Annotation)和绑定(Binding)。 1. **模块(Module)** 模块是Guice配置的基石,用于定义一组绑定规则。开发者可以通过实现`com.google.inject.Module`接口并重写`...
用户指南 博文链接:https://hejianjie.iteye.com/blog/83374
guice.jar guice.jar guice.jar guice.jar guice.jar guice.jar guice.jar
标签:google、inject、guice、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...
《Google Guice:敏捷轻量级依赖注入框架》是一本深度探索Google Guice框架的专著,由Robbie Vanbrabant撰写,旨在帮助读者全面掌握这一先进的依赖注入技术。本书共180页,提供了PDF电子书和按需打印两种版本,是...
### Guice中文文档知识点解析 #### 一、Guice概览与优势 Guice是一款专为Java 5及以上版本设计的轻量级依赖注入(Dependency Injection, DI)框架,其名称源于“juice”,意在强调其简洁高效的特点。与传统的企业...
Guice,全称Google Guice,是一款轻量级的依赖注入(Dependency Injection,简称DI)框架,由Google开发并开源。它主要用于简化Java应用程序的构造和管理,通过DI来解耦代码,使代码更易于测试、维护和扩展。Guice的...