`
iluoxuan
  • 浏览: 579954 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

guice注入

 
阅读更多

Google Guice3.0:

http://code.google.com/p/google-guice/

 

maven地址:

<dependency>
			<groupId>com.google.inject</groupId>
			<artifactId>guice</artifactId>
			<version>3.0</version>
</dependency>

 

1:UserInfoDAO

package com.ljq.guice.test;

public interface UserInfoDAO {

    public int update(int uid, String name);
}

 2: 实现类

  

package com.ljq.guice.test;

public class UserInfoDAOImpl implements UserInfoDAO {

    public int update(int uid, String name) {
        System.out.println(" update name is success! ");
        return 1;
    }

}

 guice model:

package com.ljq.guice.test;

import com.google.inject.Binder;
import com.google.inject.Module;

/**
 * guice ioc 注入
 * @author ljq
 */
public class BindDAOModule implements Module {

    public void configure(Binder binder) {
        // 默认绑定是每次都new的,不是单例
        // 单例绑定 binder.bind(UserInfoDAO.class).to(UserInfoDAOImpl.class).in(Scopes.SINGLETON)
        // 一个接口不能绑定多个实现类
        // 可以binder.bind(UserInfoDAO.class).to(new UserInfoDAOImpl()); 绑定自己的实现
        // 可以在接口上使用@ImplementedBy(UserInfoDAO.class) 如果同时存在model,优先: 手动大于注解
        binder.bind(UserInfoDAO.class).to(UserInfoDAOImpl.class);
    }

}

 

test:

 

package com.ljq.guice.test;

import org.junit.Assert;
import org.junit.Test;

import com.google.inject.Guice;
import com.google.inject.Injector;

public class TestDAO {

    @Test
    public void testUserInfo() {
        //
        Injector injector=Guice.createInjector(new BindDAOModule());
        UserInfoDAO userInfo=injector.getInstance(UserInfoDAO.class);
        UserInfoDAO userInfo2=injector.getInstance(UserInfoDAO.class);
        Assert.assertEquals(userInfo.hashCode(), userInfo2.hashCode());
    }
}

 

默认情况下,Guice每次在调用时都会返回一个新的实例,这种行为是可以通过作用域配置的,作用域允许复用对象实例。在一个应用服务的生命周期中,对象可能是单例的(@Singleton),也可能是一个回话的(@SessionScoped),也可能是一个请求的(@RequestScoped)。

 

饿汉式的单例可以很快揭示初始化问题,并确保最终用户获得一致的,直观的体验。懒汉式的单例保证了一个快速的编辑-完成-启动的开发周期,用这个Stage的枚举可以区分那种策略被使用:

  PRODUCTION DEVELOPMENT
.asEagerSingleton() eager eager
.in(Singleton.class) eager lazy
.in(Scopes.SINGLETON) eager lazy
@Singleton eager* lazy

//关于set get 注解等注入 以后再看;

 

DAO依赖guice框架的设计:

 



 

BaseDAO抽象一些共用的方法如setCache, getCache, clearCache 设置数据层缓存

可以用Memcached ,也可以用redis

DAOImpl可以对不同的DAO接口有不同的,把所有的注入放到BindDAOModule中

和业务层交互 ,只是需要通过DAOFactory就可以:

 

工程模式 通过传入不同的class获得对象,只是把用guice绑定了接口的实现而已:

public class DaoFactory {

	private static final Injector inj = Guice.createInjector(new BindDaoModule());

	public static <T> T getDao(Class<T> clazz) {
		return inj.getInstance(clazz);
	}

}

 

 

  • 大小: 17.8 KB
分享到:
评论

相关推荐

    guice超轻量级依赖注入

    Guice,全称为Google Guice,是一款由Google开发的轻量级依赖注入(Dependency Injection,简称DI)框架,主要用于简化Java应用的初始化和组件管理。依赖注入是一种设计模式,它可以帮助开发者解耦代码,提高软件的...

    基于guice的简单项目

    5. **运行HelloWorld**: 最后,`sayHello()`方法会被调用,展示出Guice注入的依赖如何协同工作。 项目中包含的两个jar包很可能是Guice的库文件,如guice.jar和guice-assistedinject.jar。这些库提供了Guice的基本...

    mybatis-guice

    MyBatis-Guice 是一个将 MyBatis ORM 框架与 Google Guice 依赖注入框架整合的项目。在 Java 开发中,MyBatis 用于处理 SQL 操作,而 Guice 则用于管理对象的生命周期和依赖关系。这个项目提供了一个示例,展示如何...

    jersey2-guice-example:Maven项目演示如何使用带有Guice注入和通过MOXy进行JSON绑定的Jersey-2,在具有基于Servlet-3.1批注的配置的嵌入式Jetty-9中运行JAX-RS 2项目

    #Jersey-2,Guice,Embedded Jetty Maven项目演示了如何使用带有Guice注入的Jersey-2和通过MOXy进行JSON绑定,在具有基于Servlet-3.1注释的配置的Embedded Jetty-9中运行JAX-RS 2项目。 ##执行这个专案的步骤叉,...

    Android资源注入Roboguice

    而Roboguice是一款基于Google Guice框架的轻量级依赖注入库,特别为Android平台设计,它极大地简化了Android应用中的对象创建和管理,包括对Android资源的注入。 **Roboguice的工作原理** Roboguice是Google Guice...

    gradle-guice

    总的来说,Gradle-guice结合了Gradle构建工具强大的构建功能和Guice依赖注入框架的轻量级特性。通过这种方式,开发者可以更高效地管理Java项目的构建和依赖注入,从而提高开发效率和项目的可维护性。尽管文档可能仍...

    guice3 + struts2.2 整合

    4. **创建Action类**:Struts2的Action类可以通过Guice注入依赖。Guice会根据你在模块中的绑定自动创建和注入对象。例如: ```java public class MyAction extends ActionSupport { @Inject private Service ...

    khs-sherpa-guice:夏尔巴人的 Guice 注入集成

    khsSherpa 的 Google Guice 依赖注入集成。 此处链接到 khsSherpa 项目...[ ] 入门 要使其正常工作,请按照下列步骤操作: 添加 &lt;listener&gt;com.khs.guice.SherpaGuiceContextListener&lt;/listener&gt; 在 Sherpa ...

    guice-jcl:使用 JCL 和 Guice 注入的示例项目

    这是一个示例项目,用于演示如何通过 (JarClassLoader) 使用依赖项注入。 这个怎么运作 不是使用 JCL 的JclObjectFactory来实例化对象,而是将 JCL 返回的类绑定到 Guice 模块中。 下面是一个简单的例子结合SomeImpl...

    guice-bridge-jit-injector:让 Guice 与 Jersey-HK2 很好地工作

    如果在Jersey 2中使用 Guice,您几乎肯定需要将 Guice 组件注入 Jersey 组件。 与常规 Guice 不同,注入 Jersey 的任何 Guice 组件都需要在 Guice 配置中声明一个绑定。 此适配器扩展了桥接器的功能以包含 Guice JIT...

    jersey-guice-injection-sample:使用 Jersey + Guice 将 RequestScoped 对象注入 ContainerRequestFilter 的示例(使用 HK2 的 Guice-bridge)

    在本文中,我们将深入探讨如何在 Jersey 框架中结合 Guice 依赖注入容器,以便实现 RequestScoped 对象在 ContainerRequestFilter 中的注入。这个示例项目 "jersey-guice-injection-sample" 使用了 HK2 的 Guice-...

    Java guice3.0轻量级的依赖注入框架 组件

    Java Guice 3.0是一款轻量级的依赖注入(Dependency Injection, DI)框架,它致力于简化Java应用程序的构建过程,让组件之间的依赖关系更加清晰和易于管理。依赖注入是一种设计模式,它允许代码在运行时自动管理和...

    xtext.第06章-自定义xtext组件.pdf

    值得注意的是,Guice注入仅限于注入单例或由Guice管理的实例,对于那些需要传递不同参数的构造函数调用,还需要结合使用其他机制来实现依赖的注入。此外,依赖注入框架的运用也要求开发者对于代码的管理有更严格的...

    scala-dropwizard-guice-example:说明如何在 Dropwizard 应用程序中为依赖注入设置 Guice 的示例

    这个存储库包含一个简单的例子,展示了如何在 Dropwizard 中使用 Guice 进行依赖注入。 Scala 是所选择的语言,但请注意,这里是非常“Java 的咖啡脚本”,而不是任何更复杂或更实用的语言。 这个示例的创建是由一...

    Java依赖注入框架Guice2

    Java依赖注入框架Guice2是Google开发的一款轻量级的依赖注入库,它极大地简化了Java应用程序中的对象创建和管理。Guice2以其简洁的API和强大的功能在开发者社区中赢得了广泛的认可。依赖注入(Dependency Injection...

    google Guice 1.0 用户指南 中文

    Guice 是一个超轻量级的、下一代的、为 Java 5 及后续版本设计的依赖注入容器。它可以帮助 Java 企业应用开发社区解决连接对象方面的问题,例如 Web 应用如何访问中间层服务、服务如何连接到登录用户和事务管理器等...

    Oracle_10g_10.2.0.4_JDBC_ojdbc14.jar

    6. 使用Mapper:通过Guice注入的Mapper接口,在业务逻辑中调用数据库操作方法。 7. 运行和测试:启动应用,执行数据库操作,验证MyBatis和Guice的集成是否正常工作。 总之,Oracle_10g_10.2.0.4_JDBC_ojdbc14.jar...

    Guice用户中文指南

    Guice是一个专门为Java 5及后续版本设计的超轻量级依赖注入框架。它旨在简化应用程序组件之间的依赖管理,并提供了一个更为简洁、灵活的方式来处理对象间的耦合关系。Guice的设计目标是使开发人员能够更轻松地创建可...

    Guice 中文文档 例子

    Guice 是 Google 推出的一款轻量级的依赖注入框架,专为 Java 5 及其后续版本设计。依赖注入(Dependency Injection,简称 DI)是一种设计模式,它允许开发者在不直接创建对象的情况下,将依赖关系从代码中解耦出来...

    guice-3.0.rar

    Guice是Google开发的一款轻量级的Inversion of Control(IoC)容器,它通过依赖注入(Dependency Injection,DI)来管理对象的生命周期和装配。Guice-3.0是Guice的一个版本,包含了核心库guice-3.0.jar,以及与...

Global site tag (gtag.js) - Google Analytics