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,全称为Google Guice,是一款由Google开发的轻量级依赖注入(Dependency Injection,简称DI)框架,主要用于简化Java应用的初始化和组件管理。依赖注入是一种设计模式,它可以帮助开发者解耦代码,提高软件的...
5. **运行HelloWorld**: 最后,`sayHello()`方法会被调用,展示出Guice注入的依赖如何协同工作。 项目中包含的两个jar包很可能是Guice的库文件,如guice.jar和guice-assistedinject.jar。这些库提供了Guice的基本...
MyBatis-Guice 是一个将 MyBatis ORM 框架与 Google Guice 依赖注入框架整合的项目。在 Java 开发中,MyBatis 用于处理 SQL 操作,而 Guice 则用于管理对象的生命周期和依赖关系。这个项目提供了一个示例,展示如何...
#Jersey-2,Guice,Embedded Jetty Maven项目演示了如何使用带有Guice注入的Jersey-2和通过MOXy进行JSON绑定,在具有基于Servlet-3.1注释的配置的Embedded Jetty-9中运行JAX-RS 2项目。 ##执行这个专案的步骤叉,...
而Roboguice是一款基于Google Guice框架的轻量级依赖注入库,特别为Android平台设计,它极大地简化了Android应用中的对象创建和管理,包括对Android资源的注入。 **Roboguice的工作原理** Roboguice是Google Guice...
总的来说,Gradle-guice结合了Gradle构建工具强大的构建功能和Guice依赖注入框架的轻量级特性。通过这种方式,开发者可以更高效地管理Java项目的构建和依赖注入,从而提高开发效率和项目的可维护性。尽管文档可能仍...
4. **创建Action类**:Struts2的Action类可以通过Guice注入依赖。Guice会根据你在模块中的绑定自动创建和注入对象。例如: ```java public class MyAction extends ActionSupport { @Inject private Service ...
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...
在本文中,我们将深入探讨如何在 Jersey 框架中结合 Guice 依赖注入容器,以便实现 RequestScoped 对象在 ContainerRequestFilter 中的注入。这个示例项目 "jersey-guice-injection-sample" 使用了 HK2 的 Guice-...
Java Guice 3.0是一款轻量级的依赖注入(Dependency Injection, DI)框架,它致力于简化Java应用程序的构建过程,让组件之间的依赖关系更加清晰和易于管理。依赖注入是一种设计模式,它允许代码在运行时自动管理和...
值得注意的是,Guice注入仅限于注入单例或由Guice管理的实例,对于那些需要传递不同参数的构造函数调用,还需要结合使用其他机制来实现依赖的注入。此外,依赖注入框架的运用也要求开发者对于代码的管理有更严格的...
这个存储库包含一个简单的例子,展示了如何在 Dropwizard 中使用 Guice 进行依赖注入。 Scala 是所选择的语言,但请注意,这里是非常“Java 的咖啡脚本”,而不是任何更复杂或更实用的语言。 这个示例的创建是由一...
Java依赖注入框架Guice2是Google开发的一款轻量级的依赖注入库,它极大地简化了Java应用程序中的对象创建和管理。Guice2以其简洁的API和强大的功能在开发者社区中赢得了广泛的认可。依赖注入(Dependency Injection...
Guice 是一个超轻量级的、下一代的、为 Java 5 及后续版本设计的依赖注入容器。它可以帮助 Java 企业应用开发社区解决连接对象方面的问题,例如 Web 应用如何访问中间层服务、服务如何连接到登录用户和事务管理器等...
6. 使用Mapper:通过Guice注入的Mapper接口,在业务逻辑中调用数据库操作方法。 7. 运行和测试:启动应用,执行数据库操作,验证MyBatis和Guice的集成是否正常工作。 总之,Oracle_10g_10.2.0.4_JDBC_ojdbc14.jar...
Guice是一个专门为Java 5及后续版本设计的超轻量级依赖注入框架。它旨在简化应用程序组件之间的依赖管理,并提供了一个更为简洁、灵活的方式来处理对象间的耦合关系。Guice的设计目标是使开发人员能够更轻松地创建可...
Guice 是 Google 推出的一款轻量级的依赖注入框架,专为 Java 5 及其后续版本设计。依赖注入(Dependency Injection,简称 DI)是一种设计模式,它允许开发者在不直接创建对象的情况下,将依赖关系从代码中解耦出来...
Guice是Google开发的一款轻量级的Inversion of Control(IoC)容器,它通过依赖注入(Dependency Injection,DI)来管理对象的生命周期和装配。Guice-3.0是Guice的一个版本,包含了核心库guice-3.0.jar,以及与...