So I am wondering, should I be using singleton objects as the examples seem to imply? If this is the case, what is the advantage compared to the old static methods approach?

依赖注入是一种将应用程序连接在一起的技术.您编写的组件并不直接相互依赖.而是将组件注入彼此.这样,您只需交换应用程序的整个部分,而无需触及任何一行代码.在编写单元测试时,依赖注入特别有用.

与静态方法相比,您可以使用所有那些花哨的OOP内容.问题基本上是“静态方法有哪些缺点?”

Are there specific object types (e.g., controllers?) that should be singletons, and are there performance implications to not marking objects as singletons?

Play或更具体地说,只要默认情况下注入依赖项,Guice就会创建一个新对象.将它们标记为@Singleton将只创建一个对象,并在所有注入中重复使用完全相同的对象.换句话说:单身人士保存一些对象创建和垃圾收集,但需要同步来初始化对象.

根据您的经验来解决使用@Singleton时的问题(source):

>有状态对象,例如配置或计数器

>构造或查找成本高昂的对象

>绑定资源的对象,例如数据库连接池.

Guice提供了非常全面的documentation顺便提一下.我强烈建议浏览一段时间.

java 什么时候依赖注入_玩框架java依赖注入 – 何时使用单例相关推荐

  1. 常见的Java审计代码函数关键字_转载:Java代码审计汇总系列(一)——SQL注入

    原文链接:https://cloud.tencent.com/developer/article/1534109 一.代码审计 相比黑盒渗透的漏洞挖掘方式,代码审计具有更高的可靠性和针对性,更多的是依 ...

  2. factorybean 代理类不能按照类型注入_彻底搞懂依赖注入(一)Bean实例创建过程

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 上一章介绍了Bean的加载过程(IOC初始化过程),加载完成后,紧接着就要用到它的依赖注入 ...

  3. java远程线程注入_系统权限远程线程注入到Explorer.exe

    提升为系统权限,注入到explorer中 一丶简介 我们上一面说了系统服务拥有系统权限.并且拥有system权限.还尝试启动了一个进程. 那么我们是不是可以做点坏事了. 我们有一个系统权限进程.而调用 ...

  4. java类添加单元测试代码_如何在java中单元测试时跳过一段代码

    如果问题确实是: 如何在Java 然后我给出的答案同意单元测试时,我跳过一段代码.依赖注入,嘲讽框架绝对是真正的单元测试的正确途径. 但是,如果问题是: 使用JUnit(或其他单元测试框架) 然后我想 ...

  5. java 面试题合集_撩课-Java面试题合辑1-50题

    1.简述JDK.JRE.JVM? 一.JDK JDK(Java Development Kit) 是整个JAVA的核心, 包括了Java运行环境(Java Runtime Envirnment), 一 ...

  6. java工程师有什么要求_什么是java,java工程师应该具备哪些能力?

    这两年,虽然各种各样的新兴语言不断涌现,收获了一大批迷粉,但是java的地位,却始终难以撼动.作为一门成熟的,经久不衰的语言,java吸引了越来越多的人,想加入进来.但是,很多人在选择java前,或多 ...

  7. java带参数的构造方法_看了Java的Class的源码,我自闭了

    作者丨chenweicool 来源:https://www.cnblogs.com/chentang/p/13170081.html 1.class这个类是什么 Class的本质也是一个类,只不过它是 ...

  8. java中注解的解析_全面解析Java中的注解与注释

    注解一.什么是 Annotation? (注解 or 注释)Annotation, 准确的翻译应该是 -- 注解. 和注释的作用完全不一样. Annotation 是JDK5.0及以后版本引入的一个特 ...

  9. java 线程中创建线程_如何在Java 8中创建线程安全的ConcurrentHashSet?

    java 线程中创建线程 在JDK 8之前,还没有办法在Java中创建大型的线程安全的ConcurrentHashSet. java.util.concurrent包甚至没有一个名为Concurren ...

最新文章

  1. 长时间运行app,产生anr
  2. JavaScript的过去、现在和未来--过去
  3. 漫谈linux文件IO
  4. OCP12C题库,71sql的使用
  5. 数字图像处理:第六章 几何运算
  6. Reactive Extensions for .NET (Rx)
  7. 想要阅读一些开源项目或框架的源代码,不知道从哪里入手?
  8. Spark Mllib里的如何对单个数据集用斯皮尔曼计算相关系数
  9. Open vSwitch 概述
  10. Enterprise Vault 10.0.4 FOR Exchange2013 部署之三-日记邮件归档
  11. Kazrog AmpCraft 1992 for Mac - 放大器建模插件
  12. 如何解决ADB server didn't ACK
  13. UISwitch的大小
  14. JAVA之父,詹姆斯·高斯林传奇人生
  15. win10 安装mysql 卡死_win10安装Mysql5.5卡住假死
  16. idea修改批量替换快捷键,idea快捷键替换处理对象 idea替换快捷键,批量处理对象的操作...
  17. python判断闰年和平年
  18. Windows Installations
  19. 华为方舟编译器官网正式上线,写一篇你应该知道的科普文章
  20. 听音室-HIFI入门之400多张发烧碟中选出的精品

热门文章

  1. web业务系统权限控制
  2. ad10怎么挖铺的铜_赣州“云星公园大观”的商铺,5米层高变4.5米,开发商挖地来凑?...
  3. python websocket爬虫_详解python websocket获取实时数据的几种常见链接方式
  4. 一个数变成0的概率有多少?(记忆化搜索)
  5. php 获取内容页图片,织梦DEDECMS内容页获取图片URL地址的方法
  6. react java编程_快速上手React编程 PDF 下载
  7. Java各种数据类型的转换
  8. android调用系统相册打开图片不显示,【报Bug】打开相册,不显示图片,选中图片后,app会崩溃...
  9. python image convert_从python运行imagemagick convert(控制台应用程序)
  10. 【超分辨率实验】Matlab-使用深度学习的单图像超分辨率(Single Image Super-Resolution Using Deep Learning)