Guice学习(一)
Guice是Google开发的一个轻量级依赖注入框架(IOC)。Guice非常小而且快,功能类似与Spring,但效率上网上文档显示是它的100倍,而且还提供对Servlet,AOP,Struts等框架的支持;这里是简单代码实现,首先要下载Guice包,http://code.google.com/p/google-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://www.docin.com/p-296920972.html&uid=52823104?bsh_bid=93526465
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库