依赖注入和Guice理解
- class RealBillingService implements BillingService {
- private final CreditCardProcessor processor;
- private final TransactionLog transactionLog;
- @Inject
- RealBillingService(CreditCardProcessor processor,
- TransactionLog transactionLog) {
- this.processor = processor;
- this.transactionLog = transactionLog;
- }
- @Override
- public Receipt chargeOrder(PizzaOrder order, CreditCard creditCard) {
- ...
- }
- }
- public class BillingModule extends AbstractModule {
- @Override
- protected void configure() {
- /*
- * This tells Guice that whenever it sees a dependency on a TransactionLog,
- * it should satisfy the dependency using a DatabaseTransactionLog.
- */
- bind(TransactionLog.class).to(DatabaseTransactionLog.class);
- /*
- * Similarly, this binding tells Guice that when CreditCardProcessor is used in
- * a dependency, that should be satisfied with a PaypalCreditCardProcessor.
- */
- bind(CreditCardProcessor.class).to(PaypalCreditCardProcessor.class);
- }
- }
- @Inject
- RealBillingService(CreditCardProcessor processor,
- TransactionLog transactionLog) {
- this.processor = processor;
- this.transactionLog = transactionLog;
- }
- bind(CreditCardProcessor.class)
- .annotatedWith(Names.named("Checkout1"))
- .to(Checkout1CreditCardProcessor.class);
- bind(CreditCardProcessor.class)
- .annotatedWith(Names.named("Checkout2"))
- .to(Checkout2CreditCardProcessor.class);
- public class RealBillingService implements BillingService {
- @Inject
- public RealBillingService(@Named("Checkout1") CreditCardProcessor processor,
- TransactionLog transactionLog) {
- ...
- }
- @Inject
- @Named("Checkout2”)
- private CreditCardProcessor processor;
- …
- }
- public interface Talk {
- public void sayHello();
- }
依赖注入和Guice理解的更多相关文章
- 记录对依赖注入的小小理解和autofac的简单封装
首先,我不是一个开发者,只是业余学习者.其次我的文化水平很低,写这个主要是记录一下当前对于这块的理解,因为对于一个低水平 的业余学习者来说,忘记是很平常的事,因为接触.应用的少,现在理解,可能过段时间 ...
- C# 一个初学者对 依赖注入 IOC 的理解( 含 Unity 的使用)
通过 人打电话 来谈谈自己对IOC的理解 版本1.0 public class Person { public AndroidPhone Phone { get; set; } public void ...
- 控制反转(IOC) 和依赖注入(DI) 的理解
1. IOC(控制反转) inverseof control是spring容器的内核,AOP.声明事务等功能在此基础上开花结果. 2. 通过实例理解IOC概念: 实例:<墨攻 ...
- 【NetCore】依赖注入的一些理解与分享
依赖注入 DI 前言 声明:我是一个菜鸟,此文是自己的理解,可能正确,可能有误.仅供学习参考帮助理解,如果直接拷贝代码使用造成损失概不负责. 相关的文章很多,我就仅在代码层面描述我所理解的依赖注入是个 ...
- DI(依赖注入)简单理解 NO1
依赖注入:目的削减程序的耦合度,达到高内聚/低耦合 常用形式:Interface Driven Design接口驱动,接口驱动有很多好处,可以提供不同灵活的子类实现,增加代码稳定和健壮性等等.通过Io ...
- 依赖注入的方式测试ArrayList和LinkedList的效率(对依赖注入的再次理解)
9/20 号再进行学习 在C++中,main函数尽可能的简单,只要调用子函数的一句话就实现了功能. java开发中,controller就相同于是main函数,其他类的方法不在本类中时候, 1.可以用 ...
- 对spring控制反转以及依赖注入的理解
一.说到依赖注入(控制反转),先要理解什么是依赖. Spring 把相互协作的关系称为依赖关系.假如 A组件调用了 B组件的方法,我们可称A组件依赖于 B组件. 二.什么是依赖注入. 在传统的程序设计 ...
- 控制反转和依赖注入(对IOC,DI理解+案例)
理解 控制反转说的官方一点就是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其实就是一种设计思想,大概思想就是把设计好的对象交给容器控制,而不是在你内部直接控制. 依赖注入是控制反 ...
- 工厂方法模式与IoC/DI控制反转和依赖注入
IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入 要想理解上面两个概念,就必须搞清楚如下的问题: 参与者都有谁? 依赖:谁 ...
随机推荐
- Python迭代对象、迭代器、生成器
在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...
- Android 屏幕切换动画
public void overridePendingTransition (int enterAnim, int exitAnim) Call immediately after one of th ...
- java中集合的扩容
对于Java中的各种集合类,根据底层的具体实现,小结了一下大致有3种扩容的方式: 1.对于以散列表为底层数据结构实现的,(譬如hashset,hashmap,hashtable等),扩容方式为当链表数 ...
- knockout 学习使用笔记------绑定值时赋值失败
在使用knockout绑定值的时候,发现无论怎么赋值都赋值失败,最后检查前端页面才发现,同一个属性绑定值的时候,绑定了两次,而在js中进行属性绑定的时候是双向绑定的,SO,产生了交互影响.谨记之. 并 ...
- LeetCode:累加数【306】
LeetCode:累加数[306] 题目描述 累加数是一个字符串,组成它的数字可以形成累加序列. 一个有效的累加序列必须至少包含 3 个数.除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相 ...
- 扯一扯 C#委托和事件?策略模式?接口回调?
早前学习委托的时候,写过一点东西,今天带着新的思考和认知,再记点东西.这篇文章扯到设计模式中的策略模式,观察者模式,还有.NET的特性之一--委托.真的,请相信我,我只是在扯淡...... 场景练习 ...
- LVS原理详解以及部署
linux virtual server简称LVS,Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大量并发访问服务的能力,因此对于大负载的服务器来讲, CPU. ...
- Servlet+MyBatis项目转Spring Cloud微服务,多数据源配置修改建议
一.项目需求 在开发过程中,由于技术的不断迭代,为了提高开发效率,需要对原有项目的架构做出相应的调整. 二.存在的问题 为了不影响项目进度,架构调整初期只是把项目做了简单的maven管理,引入spri ...
- No module named bz2
yum install bzip* python2.6 import bz2 python2.7 import bz2 error 解决:sudo cp /usr/lib64/python2.6/li ...
- 对MySQL数据类型的认识
简述 良好的逻辑设计和物理设计是高性能系统的基石,比如反范式设计可以加快某些类型的查询同时也会影响另外一些类型的查询效率,所以我们必须重视Mysql对于数据库的设计(本文主要讲述表字段类型对于数据库性 ...