美文网首页
[Guice] 6 作用域

[Guice] 6 作用域

作者: LZhan | 来源:发表于2019-08-13 22:41 被阅读0次

关于上一章绑定的内容,当遇到绑定的对象,有泛型参数时,记得使用TypeLiteral,比如说想要将Cache<String,String>绑定到实现GuiceDemoCache上,则:

bind(new TypeLiteral<Cache<String,String>>(){}).to(GuiceDemoCache.class);

1、
问题引出:

image.png

默认不是同一个,requestParser不是同一个没有问题,但是数据库连接dataBaseConnection只要创建一个就可以。

image.png

这种情况,由Provider的get方法得到的实例,是不确定的,这是SessionScope,同一个session内,就是同一个;那如果不是同一个session,就不一样了。


2、选择作用域
<1> 默认
适用于一般实例,构造速度快,stateless(没有一些有状态的成员变量,一直都保持不变)
<2> Singleton
适用于Stateful的实例,构造速度慢的实例,必须线程安全,如:数据库连接,网络连接
<3> Session/Request
含有session/request信息的实例,stateful的实例,如SessionState等


3、如何设定作用域?
以singleton为例,
<1> 可以在对应的需要绑定的实现类上加上注解@Singleton

image.png

<2> 在module中

bind(new TypeLiteral<Cache<String,String>>(){})
.to(GuiceDemoCache.class)
.in(Singleton.class);

<3> 通过Provides

@Provides @Singleton Cache<String,String> getCache(){
     return new GuiceDemoCache();
}

相关文章

  • [Guice] 6 作用域

    关于上一章绑定的内容,当遇到绑定的对象,有泛型参数时,记得使用TypeLiteral,比如说想要将Cache 绑定...

  • JavaScript块级作用域

    块作用域{ }JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECMAScript 6(简称ES6)中...

  • JS基础知识(2) -- 作用域和作用域链

    作用域 作用域就是变量与函数的可访问范围 全局作用域 函数作用域 ES6块级作用域 ES5没有块级作用域,ES6有...

  • js 作用域链 和 原型链

    作用域链 js拥有全局作用域(window)、函数作用域、块级作用域(es6)。块级作用域是es6开始才拥有的,因...

  • JS语法基础整理

    块作用域 : { }JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECMAScript 6(简称E...

  • javascript的三种作用域

    javascript 三种作用域 全局作用域 函数作用域 块级作用域(es6) 全局作用域 变量声明不写在函数内部...

  • es6-let与const

    作用域的概念 es5 两个作用域:全局作用域、函数作用域 es6 增加了块作用域 let let var 作用域不...

  • ECMAScript 6.0 作用域

    ES6中对作用域有了一个明确的界限,作用域指的是“块”作用域 // ES5 中作用域 //ES6 用 const ...

  • ES6语法

    作用域的概念 es2015函数作用域全局作用域 es6函数作用域全局作用域块作用域(新增,标识:有大括号包围的)P...

  • es6基础知识2

    1. 块作用域 作用域指的是变量的作用范围,js本身具有了全局作用域和函数作用域,es6中新增了块作用域。块作用域...

网友评论

      本文标题:[Guice] 6 作用域

      本文链接:https://www.haomeiwen.com/subject/oeyijctx.html