澳门威尼斯人网址Eclipse必会火速键,正视注入细节注入

import
com.guice.service.PrintService;

import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

16     public class MultiInterfaceServiceDemo {

       
else

public void messageReceived(IoSession session, Object message)    throws
Exception {   

  public static void main(String[] args) {

   
public
String
print(String
str)
{

import org.apache.mina.core.service.IoAcceptor;

18         @Www

  • str);

import org.apache.mina.filter.codec.textline.TextLineCodecFactory;

 2     @Inject

4) 编写翻译打包,即可共其余maven项目作为插件调用。 

 @Override  

17     }

   
//非常处理

public class TimeServerHandler extends IoHandlerAdapter {

1.3.2 Provider注入

import
com.google.inject.Module;

import org.apache.mina.filter.codec.textline.TextLineCodecFactory;

上边的Provider的趣味相当的粗略,每回新建三个新的Www瑟维斯对象出来。

三, mima的简练利用

import org.apache.mina.transport.socket.nio.NioSocketConnector;

好了下边请出大家的支柱。

1) 新建maven项目,打开pom.xml,扩张品种的倚赖库。

import org.apache.mina.core.future.ConnectFuture;

 public @interface Www {

import
com.google.inject.Binder;

import org.apache.mina.core.session.IoSession;

com.google.inject.binder.ConstantBindingBuilder.to(short)

 

cf.getSession().write(“你好”);// 发送音信   

16     }

2) 写二个服务器端

}

 @BindingAnnotation

<forModuleRepo>.example</forModuleRepo>

acceptor.getFilterChain().addLast(“logger”, new LoggingFilter());  

1     public class WwwServiceProvider implements Provider<Service>
{

      
acceptor.getFilterChain().addLast(“decode”,
new
ProtocolCodecFilter(new
TextLineCodecFactory(Charset.forName(“UTF-8”))));

ConnectFuture cf = connector.connect(new InetSocketAddress(“127.0.0.1”,
    9123));// 建立连接   

 7     private static Service homeService;

   
String
str=”Hello
world!”;

IoAcceptor acceptor = new NioSocketAcceptor();//
创立1个非阻塞的Server端Socket,用NIO   

 8                 @Override

4) 测试 mvn –version 出现版本新闻则设置成功

connector.getFilterChain().addLast(“logger”, new LoggingFilter());   

 1     public class ProviderServiceDemo {

3)转换为Eclipse项目 Mvn eclipse:eclipse

3.例子:引入mina下的lib包,还有log4j-xxx.jar和slf4j-log4jxx.jar

10     import com.google.inject.Module;

      
Injector
injector=Guice.createInjector(myModule);

public class MinaTimeServer {

33         }

      
return
Lists.newArrayList(new
AbstractServiceModule(){ 
   @Override

import java.io.IOException; import java.net.InetSocketAddress;

com.google.inject.binder.ConstantBindingBuilder.to(char)

      
printService.print(str);

import org.apache.mina.core.session.IoSession;

 public interface Service {

   
String
print(String
str);

 acceptor.getFilterChain().addLast(“codec”, new ProtocolCodecFilter(new
TextLineCodecFactory(Charset.forName(“UTF-8”))));// 钦定编码过滤器   

3         @Override

代码如下:protected
Iterable<?
extends
Module>
configure() throws
Exception {

1.MINA框架简介
MINA(Multipurpose Infrastructure for Network
Applications)是用以开发高品质和高可用性的互联网应用程序的基本功框架。
因而选取MINA框架可以省下拍卖底层I/O和线程并发等复杂工作,开发职员能够把越来越多的肥力投入到事情设计和支出当中。
MINA框架的运用相比较普遍,应用的开源项目有Apache
Directory、AsyncWeb、Apache
Qpid、QuickFIX/J、Openfire、SubEthaSTMP、red5等。
MINA框架当前平稳版本是1.1.6,最新的2.0本子如今已经发布了M1版本。
MINA框架的特点有:
基于java
NIO类库开发;选取非阻塞格局的异步传输;事件驱动;帮衬批量数额传输;协助TCP、UDP商谈;控制反转的设计形式(扶助Spring);
动用淡雅的松耦合架构;可灵活的加载过滤器机制;单元测试更易于达成;可自定义线程的数据,以增进运行于多处理器上的品质;接纳回调的措施成就调用,线程的利用更便于。

4         void execute();

       
{

cf.getSession().getCloseFuture().awaitUninterruptibly();// 等待连接断开
  

 8     import com.google.inject.Guice;

public
class
MyModule
implements
Module
{

String str = message.toString();   

 9        Guice.createInjector(new Module() {

5, maven项目支付插件步骤

NioSocketConnector connector = new NioSocketConnector();   

难题(3):小编太懒了不想写评释来区分八个服务,如何做?

public
class
Test
{

 @Override  

20         @Inject

3) 编写消息处理类

import java.nio.charset.Charset;

25                 @Override

      

import org.apache.mina.filter.codec.ProtocolCodecFilter;

11             public void configure(Binder binder) {

      

劳务器端:

15         }

 

}

11                 properties.setProperty(“web”,
“www.teny32.blog.51cto.com”);

           
session.close(true);

 private static final int PO瑞鹰T = 9123;// 定义监听端口

com.google.inject.binder.ConstantBindingBuilder.to(long)

 

import org.apache.mina.filter.logging.LoggingFilter;

1.3.4 绑定Properties

 

String str = message.toString();   

com.google.inject.binder.ConstantBindingBuilder.to(boolean)

   
public
void
sessionIdle(IoSession
session,
IdleStatus
status)
throws
Exception {

return;   

 }

   
}

System.out.println(“收到服务端发来的信息:” + message);//
展现接收到的新闻  

14         }).getInstance(ConstantInjectDemo.class);

      

 @Override  

若是三个接口有两个落到实处,那样经过@Inject和Module都不便直接实现,可是那种情状确实是存在的,于是Guice提供了其余注入方式来缓解此题材。

四,Eclipse必会快速键

import org.apache.mina.filter.codec.ProtocolCodecFilter;

   
}

acceptor.bind();// 运营监听

10             @Override

       
Date
date
= new
Date();

import org.apache.mina.core.service.IoHandlerAdapter;

 

   
//static
Logger logger = Logger.getLogger(TimeServerHandler.class);

import java.nio.charset.Charset;

 6         public static void main(String[] args) {

第壹请正确的安装Eclipse的maven插件,然后依据如下步骤: 

}

14         }

      
MyModule
myModule=new
MyModule();

}

17         StaticMultiInterfaceServiceDemo.homeService.execute();

   
}

客户端:

 9                 public void configure(Binder binder) {

 

 

地点的代码描述的是三个Service服务,有WwwService和HomeService七个完毕,同时有Www和Home两个证明(若是对阐明各样参数不晓得的急需独自去上学JAVA
5诠释)。

       

acceptor.setDefaultLocalAddress(new InetSocketAddress(POWranglerT));//
设置端口号   

 

      
injector.injectMembers(client);

acceptor.setHandler(new 提姆eServerHandler());// 钦命工作逻辑处理器   

理所当然了,由于我们WwwServiceProvider每便都以结构三个新的劳务出来,因而在类ProviderService德姆o中的provider每一次获得的劳动也是不平等的。

   

 public static void main(String[] args) {   

         System.out.println(“home.imxylz.cn”);

2, 创立工程,并转换到eclipse项目  

 

ProviderServiceDemo psd =
Guice.createInjector().getInstance(ProviderServiceDemo.class);

   
{

Date date = new Date();   

 9             public void configure(Binder binder) {

结果是能够形成guice版本的helloworld,然后作者抽象下Guice的实施进程。首先,创设四个我们供给的模块,传给Guice.createInjector(),那一个时候会扭转二个Binder对象来落到实处接口和促成类的绑定,然后发生一个Injector出来,用这一个Injector能够做到向事情逻辑类注入对象的劳动,注入之后能够符合规律调用业务逻辑格局了。 

}

 8     public static void main(String[] args) {

       
if
(str.trim().equalsIgnoreCase(“quit”))
{

cf.getSession().write(“quit”);// 发送音信   

com.google.inject.binder.ConstantBindingBuilder.to(double)

1) 打开dos窗口,cd指令进入项指标寄放的门道,比如d:\work\mav

}

 9     import com.google.inject.Inject;

 

public class TimeClientHandler extends IoHandlerAdapter {

binder.bind(Service.class).annotatedWith(Home.class).to(HomeService.class);

 二,Guice简单使用

System.out.println(“收到客户端发来的音信:” + str + ” ” + strDate);  }

 4     private static Service wwwService;

   
@Inject

import org.apache.mina.filter.logging.LoggingFilter;

 1 public class NoAnnotationMultiInterfaceServiceDemo {

   
}

System.out.println(session.getRemoteAddress().toString());  

 7             Injector inj=  Guice.createInjector(new Module() {

   

}

 5     @Inject

 

import java.text.DateFormat;

14             System.out.println(cid.v);

   
}

// 创造客户端连接器.   

  at
cn.imxylz.study.guice.inject.more.StaticMultiInterfaceServiceDemo.wwwService(StaticMultiInterfaceServiceDemo.java:17)

 

import org.apache.mina.core.service.IoHandlerAdapter;

4) 能够行使dos模拟访问服务器

session.close(true);// 停止会话    

 4         @Named(“v”)

3.     
 引入Guice所须求的包,javax.inject.jar和
guice-3.0.jar

import java.util.Date;

在科目第3篇中大家提到了足以经过Provider注入贰个劳务,那里详细说说那种方式。

import
com.guice.service.module.MyModule;

connector.setHandler(new TimeClientHandler());// 设置消息处理器   

com.google.inject.binder.ConstantBindingBuilder.to(float)

      
client.printString();

connector.dispose();  

 

       
String
str
= message.toString();

cf.awaitUninterruptibly();// 等待连接创设实现   

 

   
//对吸纳到的数额开始展览业务处理,在此地我们无论收到什么音讯都回去一个脚下的日子

DateFormat d = DateFormat.getDateTimeInstance();   

  }

   
}

2.MINA框架的常用类
类NioSocketAcceptor用于创立服务端监听;
类NioSocketConnector用于创立客户端连接;
类IoSession用来保存会话属性和发送音讯;
类IoHandlerAdapter用于定义业务逻辑,常用的方法有:
方法             定义
sessionCreated() 当会话创造时被触发
sessionOpened() 当会话开头时被触发
sessionClosed() 当会话关闭时被触发
sessionIdle() 当会话空闲时被触发
exceptionCaught() 当接口中别的办法抛出极度未被抓获时触发此方法
messageRecieved() 当接收到音信后被触发
messageSent() 当发送消息后被触发

17         NoAnnotationMultiInterfaceServiceDemo.homeService.execute();

2) 解压到任意目录,然后设置环境变量
m2_home 值是maven的解压路径。

if (str.trim().equalsIgnoreCase(“quit”)) {    

6         }

           
return;

connector.getFilterChain().addLast(“codec”,new ProtocolCodecFilter(new
TextLineCodecFactory(Charset.forName(“UTF-8”)))); // 设置编码过滤器   

1     @ProvidedBy(WwwServiceProvider.class)

    
static
Logger
logger
= LoggerFactory.getLogger(TimeServerHandler.class);

}   

16         });

   
public
void
setPrintService(PrintService
printService)

粗略的小例子,做个笔记

 4     private static Service wwwService;

   
public
void
printString()

 public static void main(String[] args) throws IOException {   

  public @interface Home {

开拓eclipse,file,import,选择maven Existing Project ,finish就马到成功了导入

cf.getSession().write(“hello”);// 发送音讯   

 @BindingAnnotation

   import
com.google.inject.Guice;

public void sessionCreated(IoSession session) {   //
显示客户端的ip和端口   

 

4),编写配置文件 ,然后运维代码类 (代码略)

import java.net.InetSocketAddress;

20 }

      
return
str;

public void messageReceived(IoSession session, Object message) throws
Exception {   

18         StaticMultiInterfaceServiceDemo.wwwService.execute();

2) 在src/main/java中编辑代码文件,继承自HotSwapModuleAdapter,里面唯有多个亟须完毕的configuation方法,在里面能够配备加载的服务。

session.write(str);// 重临当前时刻的字符串   

17 

2.     
新建java项目,写个接口,写个落到实处类,还有叁个利用这几个接口的工作逻辑类。

String strDate = d.format(date);   

5             return new WwwService();

       
}

public class MinaTimeClient {

非凡不幸,你将赢得近似一下的荒唐,也正是说不能绑定三个服务。

      

}

 5     package cn.imxylz.study.guice.inject.more;

       
logger.debug(“IDLE

connector.setConnectTimeout(30);// 设置连接超时   

18         NoAnnotationMultiInterfaceServiceDemo.wwwService.execute();

       
}

34     }

 class
MyHandler
extends
IoHandlerAdapter
{

11         public void configure(Binder binder) {

 

 2     @Named(“web”)

      
LoggingFilter lf=new
LoggingFilter(“testLog”);

10                    
binder.bind(Service.class).toProvider(WwwServiceProvider.class);

import
com.google.inject.Injector;

 @Retention(RetentionPolicy.RUNTIME)

      

     @Override

public
interface
PrintService
{

 3         @Inject

   
public
static
void
main(String[]
args)
{

19     }

      
acceptor.setHandler(new
MyHandler());

 

      

 7             ProviderServiceDemo psd = Guice.createInjector(new
Module() {

1) 下载maven的包 地址可百度

 9                 @Override

 

 8     public static void main(String[] args) {

      
acceptor.getSessionConfig().setReadBufferSize(100);

题材(2):假使极大心3个属性绑定了四个接口如何做?

1, 安装

7     }

});

 2 

1) 引入相应的包
mina-core-2.0.4.jar 和slf4j-api-1.6.1.jar

   cn.imxylz.study.guice.inject.more.Www and
cn.imxylz.study.guice.inject.more.Home

import
com.guice.service.PrintService;

15          }

 
各位关心作者的博友们好,本人现已转java了,经过贰个多月的求职,终于找到了和谐中意的干活,感觉温馨读书能力强点之外,经验还必要非常长日子的累积,为了提升本身还要也给需求学习java的同志一些借鉴,打算把自家的办事笔记放上来提供参考,希望能指正不足的地点,共同升高。

16     }

          
}

19     }

public
class
Client
{

 7         ConstantInjectDemo cid = Guice.createInjector(new Module() {

  • session.getIdleCount(status));

1.3.3 绑定常量

package
com.guice.service.client;

流入的进度看下边包车型地铁代码。

 

除开可以绑定基本项目外,还足以绑定三个Properties到Guice中,当然了,由于Properties本质上时1个Map<String,String>,因此Guice也同意绑定二个Map<String,String>。

}

 }

4.     
编写模块类

 @Retention(RetentionPolicy.RUNTIME)

       
System.out.println(“getdata:
“+str);

binder.bind(Service.class).annotatedWith(Www.class).to(WwwService.class);

   
}

 4         private Provider<Service> provider;

      

 }

import
com.google.inject.Inject;

很分明要是这东西和线程绑定就13分好了,比如大家得以应用ThreadLocal来做线程的靶子换来。

   

20 }

       
cause.printStackTrace();

18

 

自然,既然能够行使Named,也就能够动用自个儿写声明了。然则看起来好像从没多大职能。除了上述写法,也能够用上面包车型客车不二法门完毕。

      
System.out.println(str);

2     public interface Service {

   

binder.bind(int.class).annotatedWith(Names.named(“v”)).toInstance(12);

1) 创设maven索引 window-show view-other-maven-maven
repository 重新建立地方和全局的maven仓库索引

 6     @Home

      
binder.bind(PrintService.class).to(PrintServiceImp.class);

程序员都以懈怠的,于是谷歌(Google)帮我们提供了一个Names的模版来变化注明。看上边包车型客车事例。

      

15             }

18 package com.sthr.tutorial;
19 import com.sthr.integration.BootActivator;
20 import com.sthr.integration.SimpleBootActivator;
26 public class App implements BootActivator
27 {
28     private static final BootActivator activator=new SimpleBootActivator(new App());
29     
30     public static void main( String[] args ) throws Exception
31     {
32       activator.start(args);
33     }
34 
35     @Override
36     public void start(String[] arg0) throws Exception {
37         // TODO Auto-generated method stub
38           System.out.println( “Hello World!” );
39     }
40 }

 6 

 

 5     public static void main(String[] args) {

   
public
void
messageReceived(IoSession
session,
Object
message)
throws
Exception {

 2     @Inject

功用:管理Java类库,管理注重,能够很好的决定信赖项的版本,并且项目中不设有现实注重lib,只有对于依靠的描述,来源也得以很好的集中央控制制。

10             @Override

       
logger.debug(“Rec:”

例如下边包车型大巴自定义注解。

      
System.out.println(“服务器监听···”);

13             }).getInstance(ConstantInjectDemo.class);

轻量级的,基于java5的泛型和注释的依赖注入框架(ioc)

13             psd.provider.get().execute();

      

 9        Guice.createInjector(new Module() {

}

 @Target({FIELD,PARAMETER})

 

第1我们必要组织贰个Provider<T>出来。

      

psd.service.execute();

一,Maven 

binder.requestStaticInjection(NoAnnotationMultiInterfaceServiceDemo.class);

import
com.guice.service.imp.PrintServiceImp;

 

 

31             misd.homeService.execute();

3)
在pom.xml中,配置<forClass>com.sthr.tutorial.FirstPluginAdapter</forClass>

     public void execute() {

}

 8                 @Override

   
public
void
exceptionCaught(IoSession
session,
Throwable
cause)
throws
Exception {

         System.out.println(“www.teny32.blog.51cto.com”);

 Alt+/:代码提示

 @Target({FIELD,PARAMETER})

   
{

 1     @Inject

      
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE,
10);

 

import
com.guice.service.PrintService;

 1     public class ConstantInjectDemo {

 

19         private Service wwwService;

          
protected
void
configureServices() {

21         @Home

      

     void execute();

             
//业务方法

此类的组织是流入四个瑟维斯服务,当中wwwService是流入@Www注明关联的Www瑟维斯服务,而home瑟维斯是流入@Home表明关联的HomeService服务。

   
//当连接空闲时的拍卖

     }

 package
com.guice.service.module;

 8             ConstantInjectDemo cid = Guice.createInjector(new
Module() {

      
acceptor.bind(new
InetSocketAddress(5000));

实在,参照教程02,大家能够利用上面包车型客车例子。

      
Client
client=new
Client();

自然若是想自行注入(不行使Module手动关联)服务来说,能够选拔@ProviderBy注脚。

 package
com.guice.service;

 

 

 

3, 导入到eclise中

 8             @Override

      
acceptor.getFilterChain().addLast(“logger”,
lf);

24             MultiInterfaceServiceDemo misd = Guice.createInjector(new
Module() {

1.     
下载Guice的应用包和源码包。

15         System.out.println(cid.web);

       
session.write(date.toString());

1.3.1 接口多完毕

   
}

22         private Service homeService;

4, 使用eclipse创建maven项目

32             misd.wwwService.execute();

 

 3     @Www

}

5     }

      
this.printService=printService;

 7     import com.google.inject.Binder;

2) 打命令建立maven项目 mvn
archetype:generate Dgroupld com.lifc Dartifactld hellomav 在推行进度中或者要再一次输入,输入的groupld是公司也许包名,artifactld是项目名

has more than one annotation annotated with 

 

澳门威尼斯人网址,17 

   
PrintService
printService;

com.google.inject.binder.ConstantBindingBuilder.to(String)

      

16 

   

 9                 public void configure(Binder binder) {

3) 打开pom.xml,增添3个倚赖库gccp integration,保存之后,编写代码 

12             });

    IoAcceptor
acceptor=new
NioSocketAcceptor();

一致有关此布局大家要问多少个难点。

 写测试类

 

  

这么我们就无需选用Module将Provider绑定到Service上,获取服务就不会细小略了。

 

看看上边包车型客车例证,演示了二个绑定整数值到实例的事例。

3) 加到path中来 %m2_home%/bin

 3     @Named(“Www”)

}

难点(1)静态注入多少个劳务怎么写?

2) 创立maven项目 File-new-maven-maven project –next
–all category –quickstart –填写组织和项目名称钦点版本和包结构-finish

@BindingAnnotation: 

      

 public class WwwService implements Service {

public
class
PrintServiceImp
implements
PrintService
{

10                 Properties properties= new Properties();

Ctrl+/:注释/撤消注释
Ctrl+D:删除光标所在行
Shift+Ctrl+F:代码格式化。如若选取了代码,仅对所选代码格式化
Shift+Ctrl+X:将所选字符转为大写
Shift+Ctrl+Y:将所选字符转为小写
Ctrl+M:火速对日前视图最大化
Ctrl+单击:能够跟踪办法和类的源码
Ctrl+鼠标停留:能够突显类和方法的源码
双击左括号(小括号、中括号、大括号),将精选括号内的享有内容。
Ctrl+1:光标停在某变量上,按Ctrl+1键,能够提供便捷重构方案。选中若干行,按Ctrl+1键可将此段代码放入for、while、if、do或try等代码块中。
F3:打开评释该引用的文本
F4:打开类型层次结构
F5:单步跳入
F6:单步跳过
F7:单步跳出
F8:继续,即使前面没有断点,程序将运转完
Ctrl+H:打开搜索窗口
Ctrl+Shift+S:保存全体
Alt+Left:回退一步[[BR]]
Alt+Right:前跳一步[[BR]]
Ctrl+Shift+T:打开类型
Ctrl+Shift+LX570:打开财富
Ctrl+Q:回到最终2次编辑的地点
Ctrl+Shift+G: 在workspace中搜寻引用
Ctrl+Alt+Down: 复制高亮彰显的一行或多行
Alt+Up(Down):将一行可能多行向上可能向下活动
Ctrl+Alt+↓ 复制当前行到下一行(复制扩张)
Ctrl+Alt+↑ 复制当前行到上一行(复制扩张)
Alt+↓ 当前行和上边一行交互地方(尤其实用,能够省去先剪切,再粘贴了)
Alt+↑ 当前行和下面一行交互地点(同上)
Alt+← 前一个编纂的页面
Alt+→ 下贰个编辑的页面(当然是针对性地方那条来说了)
Alt+Enter 展现当前甄选财富(工程,or
文件
or文件)的脾性
Shift+Enter 在当下行的下一行插入空行(那时鼠标能够在脚下行的任1人置,不必然是末了)
Shift+Ctrl+Enter 在现阶段行插入空行(原理同上条)
Ctrl+Q 定位到最后编辑的地点
Ctrl+L 定位在某行
(对于程序超过100的人就有福音了)
Ctrl+T 快捷呈现当前类的存在延续结构
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word连忙稳定到下1个
Ctrl+E 快捷展现当前艾德iter的下拉列表(若是当前页面没有突显的用金鼎文表示)
Ctrl+/(小键盘)
折叠当前类中的全体代码
Ctrl+×(小键盘)
展开当前类中的全体代码
Ctrl+Shift+E 突显管理当前开拓的保有的View的管理器(能够选择关闭,激活等操作)
Ctrl+J 正向增量查找
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+F4 关闭全体打开的艾德iter
Ctrl+Shift+P 定位到对于的匹配符(譬如{})
(从前方定位前面时,光标要在匹配符里面,后边到日前,则反之)
Ctrl+Shift+酷威 查找文件
Ctrl+Shift+T 查找类
下边的飞速键是重构之中常用的
Alt+Shift+R 重命名
Alt+Shift+M 抽取方法
Alt+Shift+C 修改函数结构
Alt+Shift+L 抽取本地变量(
可以一向把有个别魔法数字和字符串抽取成3个变量,尤其是多处调用的时候)

4         public Service get() {

上面记录四个最简便易行的行使进程。

11                 }

      

6         public static void main(String[] args) {

       
logger.debug(“Message
written…”);

 3         @Inject

   
public
void
configure(Binder
binder)
{

16         });

}

}

 4        private Service service;

binder.bind(Service.class).annotatedWith(Names.named(“Www”)).to(WwwService.class);

23         

 3     private String web;

 5 

1)
cn.imxylz.study.guice.inject.more.StaticMultiInterfaceServiceDemo.wwwService 

12             }).getInstance(ProviderServiceDemo.class);

12                 Names.bindProperties(binder, properties);

1.3 多接口实现

 5         private int v;

10                  
binder.bind(Service.class).toProvider(WwwServiceProvider.class);

}}).getInstance(MultiInterfaceServiceDemo.class);

 
 binder.bind(Service.class).annotatedWith(Home.class).to(HomeService.class);

binder.bind(Service.class).annotatedWith(Names.named(“Home”)).to(HomeService.class);

 3         @Inject

 7 

 1 public class StaticMultiInterfaceServiceDemo {

    }

14        
 binder.requestStaticInjection(StaticMultiInterfaceServiceDemo.class);

 public class HomeService implements Service {

11                 }

地点的例证中我们接纳Named来标注大家的劳动应该使用什么的注释,当然前提是大家曾经将相应的劳务与申明关联起来了。

17         @Inject

除去上述二种艺术大家仍是能够注入Provider,而不是流入服务,比如下边包车型客车例证例子中,属性不再是Service,而是三个Provider<瑟维斯>。

除此而外能够绑定int外,在ConstantBindingBuilder类中还是能够绑定别的的主导项目。

 1     public class ProviderServiceDemo {

 6         public static void main(String[] args) {

 

 5     @Inject

     public void execute() {

15         }

 6     @Named(“Home”)

13             }

11                    
binder.bindConstant().annotatedWith(Names.named(“v”)).to(12);

 

binder.bind(Service.class).annotatedWith(Www.class).to(WwwService.class);

10                 public void configure(Binder binder) {

14             psd.service.execute();

 4 

26                 public void configure(Binder binder) {

15     }

12                 }

 

     @Override

 7     private static Service homeService;

13             ProviderServiceDemo psd =
inj.getInstance(ProviderServiceDemo.class);

相关文章