Guice 学习(六)使用Provider注入服务( Provider Inject Service)
1、定义接口
package com.guice.providerInject;import com.google.inject.ProvidedBy;public interface Service {public void execute();
}
2、定义实现类
package com.guice.providerInject;public class OneService implements Service {@Overridepublic void execute() {System.out.println("Hello! I'M Service 1!");}
}
3、Provider实现类
package com.guice.providerInject;import com.google.inject.Provider;/*** TODO : 每次新建一个新的OneService对象出来* * @author E468380*/
public class OneServiceProvider implements Provider<Service> {@Overridepublic Service get() {return new OneService();}}
4、ProviderServiceDemo 測试类
package com.guice.providerInject;import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Module;/*** 使用上面OneServiceProvider来新建实例 当然假设想自己主动注入(不使用Module手动关联)服务的话。能够使用@ProviderBy注解。
* */
public class ProviderServiceDemo { @Inject private Service service; public static void main(String[] args) { ProviderServiceDemo instance = Guice.createInjector(new Module() { @Override public void configure(Binder binder) { binder.bind(Service.class).toProvider(OneServiceProvider.class); } }).getInstance(ProviderServiceDemo.class); instance.service.execute();// Hello! I'M Service 1! } }
5、ProviderServiceDemo2測试类
假设不想使用Module手动关联服务的话。能够使用@ProviderBy注解。
package com.guice.providerInject;import com.google.inject.ProvidedBy;@ProvidedBy(OneServiceProvider.class)
public interface Service {public void execute();
}
package com.guice.providerInject;import com.google.inject.Guice;public class ProviderServiceDemo2 {public static void main(String[] args) {ProviderServiceDemo2 instance = Guice.createInjector().getInstance(ProviderServiceDemo2.class);// instance.service.execute(); //发现不起作用不知何解 ?}
}
6、ProviderServiceDemo3測试类
package com.guice.providerInject;import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Module;
import com.google.inject.Provider;/*** TODO :能够注入Provider而不是注入服务 * ◇因为我们OneServiceProvider每次都是构造一个新的服务出来,* 因此在类ProviderServiceDemo3中的provider每次获取的服务也是不一样的。* * @author E468380*/
public class ProviderServiceDemo3 {@Injectprivate Provider<Service> provider;public static void main(String[] args) {ProviderServiceDemo3 instance = Guice.createInjector(new Module() {@Overridepublic void configure(Binder binder) {binder.bind(Service.class).toProvider(OneServiceProvider.class);}}).getInstance(ProviderServiceDemo3.class);instance.provider.get().execute();// Hello! I'M Service 1!}
}
转载于:https://www.cnblogs.com/mengfanrong/p/5231891.html
Guice 学习(六)使用Provider注入服务( Provider Inject Service)相关推荐
- dubbo provider异步_Dubbo学习(六) Dubbo面试问题
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合). 从服务模型的角度来看,Dubbo采用的是一种非常简单的 ...
- angular js一factory,service,provider创建服务
服务:在AngularJS 中,服务是一个函数或对象 在写控制器的时候,不要复用controller,当我们的controller里面有相同的代码时,此时需要把它抽取成一个服务,所有的服务都符合依赖注 ...
- ROS学习笔记六:理解ROS服务和参数
ROS学习笔记六:理解ROS服务和参数 主要介绍ROS服务和参数,同时使用命令行工具rosservice和rosparam. ROS service service是节点之间互相通信的另一种方式,se ...
- 学习笔记:SpringCloud 微服务技术栈_实用篇①_基础知识
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 前言 学习视频链接 SpringCloud + RabbitMQ + Docker + Redis + 搜 ...
- Spring学习资料之 依赖注入(二)
1.2 属性注入(Field Inject) 1.2.1 基本属性注入 首先来看一个例子.Service.java 1 @ImplementedBy(ServiceImpl.class) 2 publ ...
- 避免在 ASP.NET Core 3.0 中为启动类注入服务
本篇是如何升级到ASP.NET Core 3.0系列文章的第二篇. Part 1 - 将.NET Standard 2.0 类库转换为.NET Core 3.0 类库 Part 2 - IHostin ...
- Google Guice 一个轻量级的依赖注入框架
1.美图 2.概述 2.1 背景 在做项目的时候,看见有段代码直接是使用Google Guice 注入了avaitor表达式. 2.1 官网 Github 主页:https://github.com/ ...
- JMS学习六(ActiveMQ消息传送模型)
JMS学习六(ActiveMQ消息传送模型) ActiveMQ 支持两种截然不同的消息传送模型:PTP(即点对点模型)和Pub/Sub(即发布 /订阅模型),分别称作:PTP Domain 和Pub/ ...
- Docker学习六:综合实践
前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...
最新文章
- 某程序员大佬北漂16年,从住地下室到身家千万,如今回老家躺平!
- flutter重新配置sdk路径_在Android中配置flutter
- [2014NoDEA]An Osgood type regularity criterion for the liquid crystal flows
- Android开发:程序目录结构详解:activity主要方法等
- MFC学习之路之多媒体 --(1) DirectShow
- docker改变镜像源
- 隐藏与显现_惠州楼盘冷热不均价格涨跌互现 差异化调控作用显现
- cvCalcBackProject() 直方图反向投影匹配
- 新版谷歌浏览器开启Flash支持,开启flash方法
- 一点经验:从五星填数中所学到的
- 今日睡眠质量记录77分
- 今日科技联播:饿了么与屈臣氏达成合作;iPhone XR需求旺盛
- Centos7.2 Apache根据User-Agent设置访问禁止
- 毕业生必看:获取就业信息的主要渠道(收藏起来,以免丢失)
- 基于MATLAB图像处理
- 自定义配置数据源 DataSource
- sqlserver战德臣_数据库系统(上):模型与语言答案
- 数据库----数据查询
- 养子女对养父母和亲生父母都要有赡养义务吗
- 台式计算机怎样能搜无线连接,台式机无线网如何显示
热门文章
- Ubuntu安装sciki-learn及环境
- iOS截取视频预览图,截图方向错误的解决
- CSS 设置背景颜色透明,文字不透明
- POST 一张 图像的调试来认识 http post
- 细说嵌入式Linux文件系统的制作方法
- CCIE Security考试升级了
- [Java] 蓝桥杯ADV-102 算法提高 单词个数统计
- 【iOS开发】理解IBOutlet、Outlet、referencing outlet、outlet connection
- php server 不支持,SQL server不支持utf8 php却用utf8的矛盾问题解决方法
- python如何存储numpy数组_python – 如何将numpy数组作为对象存储在pandas数据框中?...