介绍
Guice is a lightweight dependency injection framework for Java .
即 Guice 是轻量级依赖注入的 Java 框架。
Guice
特点
- 取消 Bean 概念,使用 Java 代码描述绑定规则
- 泛型支持
- 专注于 Dependency Injection
依赖
Maven
1 | <!-- Guice --> |
Gradle
1 | // Guice |
注入 @Inject
1.构造器注入(推荐)
1 | public class BookManager { |
2.设值注入
1 | public class BookManager { |
绑定 bind(…)
1.类名绑定
1 | bind(BookService.class).to(BookServiceImpl.class); |
2.实例绑定
1 | bind(BookDao.class).toInstance(new BookDaoImpl())); |
3.链式绑定
1 | bind(PriceService.class).to(PriceServiceImpl.class); |
4.Provider 绑定
1 | bind(CurrencyService.class).toProvider(CurrencyProvider.class); |
5.命名绑定
1 |
|
6.泛型绑定
1 | bind(new TypeLiteral<List<String>>() {}) |
7.集合绑定
1 | // 集合Set绑定 |
Module 的相互关系
- 并列
- 嵌套
- 覆盖
作用域
- 默认:一般实例,构造速度快
- 单例 singleton :构造速度慢的实例,必须线程安全,如数据库连接
- Session Scope :含有 session/request 信息的实例
Guice 与 Spring 的依赖注入代码比较
一、Spring 依赖注入
- Dao
1 | public interface UserDao { |
1 | public class UserDaoImpl implements UserDao { |
- Service
1 | public interface UserService { |
1 | public class UserServiceImpl implements UserService { |
- Manager
1 | public class UserManager { |
- 配置文件 applicationContext.xml
1 | <?xml version="1.0" encoding="UTF-8"?> |
- 主程序
1 | public class SpringApp { |
二、Guice 依赖注入
- Dao
1 | public interface BookDao { |
1 | public class BookDaoImpl implements BookDao { |
- Service
1 | public interface BookService { |
1 | public class BookServiceImpl implements BookService { |
- Manager
1 | public class BookManager { |
- Module
1 | public class BookModule extends AbstractModule { |
- 主程序
1 | public class GuiceApp { |
参考
[1] 慕课网:使用Google Guice实现依赖注入
[2] 代码