博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Guice学习(一)
阅读量:6224 次
发布时间:2019-06-21

本文共 1687 字,大约阅读时间需要 5 分钟。

Guice是Google开发的一个轻量级依赖注入框架(IOC)。Guice非常小而且快,功能类似与Spring,但效率上网上文档显示是它的100倍,而且还提供对Servlet,AOP,Struts等框架的支持;这里是简单代码实现,首先要下载Guice包,这里可以下载;程序结构如下

这里导入了guice包与inject包,最简单的实现;下面是相关代码:

UserDao实现

package 
com.wf.dao;
 
public 
class 
UserDao {
 
    
public 
boolean 
saveUser(){
        
System.out.println(
"user have save"
);
        
return 
true
;
    
}
}

UserService实现

package 
com.wf.services;
 
import 
javax.inject.Inject;
 
import 
com.wf.dao.UserDao;
 
public 
class 
UserService {
 
    
private 
UserDao userDao;
 
    
@Inject
    
public 
void 
setUser(UserDao userDao) {
        
this
.userDao = userDao;
    
}
     
    
public 
boolean 
saveUser(){
        
boolean 
result = userDao.saveUser();
        
System.out.println(result);
        
return 
result;
    
}
}

  下面是相当与Spring中xml的一个类MyModule

package 
com.wf.util;
 
import 
com.google.inject.Binder;
import 
com.google.inject.Module;
import 
com.google.inject.Scopes;
import 
com.wf.services.UserService;
 
public 
class 
MyModule
implements 
Module {
 
    
@Override
    
public 
void 
configure(Binder binder) {
        
binder.bind(UserService.
class
).in(Scopes.SINGLETON);
    
}
 
}

  这三个类创建完毕后就可以测试了,下面是单元测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package 
com.wf.test;
 
import 
com.google.inject.Guice;
import 
com.google.inject.Injector;
import 
com.google.inject.Module;
import 
com.wf.services.UserService;
import 
com.wf.util.MyModule;
 
import 
junit.framework.TestCase;
 
public 
class 
Test 
extends 
TestCase {
 
    
private 
UserService userService;
    
protected 
void 
setUp() 
throws 
Exception {
        
userService = 
new 
UserService();
    
}
 
    
public 
void 
testUserService(){
        
Module module = 
new 
MyModule();
        
Injector in = Guice.createInjector(module);
        
in.injectMembers(userService);
        
assertTrue(userService.saveUser());
    
}
}

  以上是注入的简单实现,Guice还有与其它框架的结合使用,可能现在主流还是Spring,不过这个应该也会渐渐被大家注意;感谢Google

转载地址:http://qnyna.baihongyu.com/

你可能感兴趣的文章
Allegro PCB Design GXL (legacy) 从dxf文件中导入板框
查看>>
手撸系列之——ORM(对象关系映射)
查看>>
iOS - OC RunLoop 运行循环/消息循环
查看>>
php smarty使用..
查看>>
FLV文件格式解析
查看>>
将Sqlserver2012Express的mdf文件同步到SqlServer2008
查看>>
10条影响CSS渲染速度的写法与建议(摘抄HTML5中国)
查看>>
选项卡
查看>>
【深度学习】一文读懂机器学习常用损失函数(Loss Function)
查看>>
php判断数据类型
查看>>
css 定位标签设置格式
查看>>
js-实现鼠标滑轮滚动实现换页
查看>>
windows下通过.bat运行java程序
查看>>
Zabbix二次开发_01基础
查看>>
几何画板演示多边形滚动动画的方法
查看>>
指令处理的数据的长度
查看>>
短信验证倒计时
查看>>
iOS11里判断Safari浏览器是无痕模式还是正常模式?
查看>>
Vue.js 与 ActiveX 控件
查看>>
DVWA学习笔记
查看>>