google guice使用

1. 概述

Guice是Google开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC)。Guice非常小而且快。Guice是类型安全的,它能够对构造函数,属性,方法(包含任意个参数的任意方法,而不仅仅是setter方法)进行注入。Guice采用Java加注解的方式进行托管对象的配置,充分利用IDE编译器的类型安全检查功能和自动重构功能,使得配置的更改也是类型安全的。Guice提供模块对应的抽象module,使得架构和设计的模块概念产物与代码中的module类一一对应,更加便利的组织和梳理模块依赖关系,利于整体应用内部的依赖关系维护。
Guice优点
1. 运行效率高:在使用的时候去注入,运行效率和灵活性高
2. 容易配置:只需声明为@inject,等着被注入,最后在统一的Module里声明注入方

2. 使用

2.1 配置依赖

"com.google.inject" % "guice" % guiceVersion,
"com.google.inject.extensions" % "guice-assistedinject" % guiceVersion

2.2 注入方式

Guice的实现只需要在构造函数,字段,或者注入函数上标注@Inject

2.3 注册module

Guice提供依赖配置类,需要继承至AbstractModule,实现configure方法。在configure方法中我们可以用Binder配置依赖。下面介绍三中常用的绑定方法,其他还有toConstructor 用于当绑定对象有多个构造方法时,指定某一个构造方法

2.3.1 普通绑定
bind(Animal.class).to(Cat.class);

连接绑定

bind(Animal.class).to(Cat.class);
 bind(Cat.class).to(PersianCat.class);
 ```
####2.3.2   Instance绑定
直接使用实例而来进行绑定。通常这种绑定作用于没有什么依赖和实现的对象上。最普遍的应用大概就是一些参数变量的绑定了

val path = Paths.get(“”).toAbsolutePath + “/scheduler/conf/config.properties” replace(“scheduler/scheduler”, “scheduler”)
val configure = new SchedulerConfigure(path)

```
bind(classOf[KmdmCommonConfigure]).toInstance(configure)
2.3.3 Provider 绑定

当需要某种类型的对象时,用户可以自定义使用,需要重写get方法,下面是一个获取quartz scheduler的例子

bind(classOf[Scheduler]).toProvider(classOf[SchedulerProvider])
@Singleton
class SchedulerProvider @Inject()(jobFactory: SchedulerJobFactory) extends Provider[Scheduler] {

  System.setProperty(StdSchedulerFactory.PROPERTIES_FILE, Paths.get("").toAbsolutePath + "/scheduler/conf/quartz.properties" replace("scheduler/scheduler", "scheduler"))
  private val scheduler = new StdSchedulerFactory().getScheduler
  scheduler.setJobFactory(jobFactory)

  override def get = scheduler
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值