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); } }
相关推荐
guice超轻量级依赖注入用了才知道是爽
#Jersey-2,Guice,Embedded Jetty Maven项目演示了如何使用带有Guice注入的Jersey-2和通过MOXy进行JSON绑定,在具有基于Servlet-3.1注释的配置的Embedded Jetty-9中运行JAX-RS 2项目。 ##执行这个专案的步骤叉,...
gradle-guice-chinese.pdf,gradle构建工具中文说明文档
Android资源注入Roboguice
khsSherpa 的 Google Guice 依赖注入集成。 此处链接到 khsSherpa 项目...[ ] 入门 要使其正常工作,请按照下列步骤操作: 添加 <listener>com.khs.guice.SherpaGuiceContextListener</listener> 在 Sherpa ...
这是一个示例项目,用于演示如何通过 (JarClassLoader) 使用依赖项注入。 这个怎么运作 不是使用 JCL 的JclObjectFactory来实例化对象,而是将 JCL 返回的类绑定到 Guice 模块中。 下面是一个简单的例子结合SomeImpl...
如果在Jersey 2中使用 Guice,您几乎肯定需要将 Guice 组件注入 Jersey 组件。 与常规 Guice 不同,注入 Jersey 的任何 Guice 组件都需要在 Guice 配置中声明一个绑定。 此适配器扩展了桥接器的功能以包含 Guice JIT...
这个存储库包含一个简单的例子,展示了如何在 Dropwizard 中使用 Guice 进行依赖注入。 Scala 是所选择的语言,但请注意,这里是非常“Java 的咖啡脚本”,而不是任何更复杂或更实用的语言。 这个示例的创建是由一...
ExtJs 权限管理,权限控制到按钮,Guice 注入,MyBatis3学习,Filter拦截请求。
Java guice3.0轻量级的依赖注入框架 组件guice 是轻量级的依赖注入框架,依赖注入是类将他们的依赖声明为参数,而不是直接创建依赖的一种设计模式。
Guice (pronounced 'juice')是一个轻量级的依赖注入框架,需要Java 6以上支持。由Google赞助
injector, python 依赖注入框架,由Guice启发 注入- python 依赖注入框架,由Guice启发 简介基于 Pattern的依赖注入在 python 中比它的他语言更有用,主要是因为它对关键字参数的支持。这就是说,一个帮助这个过程的...
Guice是Google开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC)。Guice非常小而且快。Guice是类型安全的,它能够对构造函数,属性,方法(包含任意个参数的任意方法,而不仅仅是setter...
Guice用户中文指南,Guice (读作"juice")是超轻量级的,下一代的,为Java 5及后续版本设计的依赖注入容器
Guice2中最轻的API扩展将极大地影响开发者代码的大小和维护。Guice2的开发者很好地平衡了可维护性和敏捷性。
用 Guice 写 Java Guice 1.0 用户指南 王咏刚 译 Guice (读作"juice")是超轻量级的,下一代的,为Java 5及后续版本设计的依赖注入容器。
Google Guice 这个高效的与Spring类似的依赖注入框架; MyBatis配置和使用; Google Guice与MyBatis集成,支持注解事务,简单的无法想象; Mybatis与mysql集成;实现发送邮件轮询; 源码是个web项目,里面有数据库的...
Google带来的Guice(读作"juice")是超轻量级的,下一代的,为Java 5及后续版本设计的依赖注入容器。 中文文档+例子
guice-3.0.jar ,Guice是Google开发的一个轻量级依赖注入框架(IOC)。Guice非常小而且快,功能类似与Spring,但效率上网上文档显示是它的100倍,而且还提供对Servlet,AOP,Struts等框架的支持;
Guice中文文档,介绍Guice的基本使用,适合初学者。