带有Gluon Ignite和Dagger的JavaFX中的依赖注入

点燃 依赖注入抽象框架Gluon Ignite在几个流行的依赖注入框架(例如Spring,Dagger和Guice)上创建了一个通用抽象。

目前,Gluon 页面仅包含一个示例,该示例使用Gluon Ignite和Google Guice作为依赖注入框架,我想尝试使用Dagger代替它,因为它的目标是比其他依赖注入框架更简约和更快,这对于功能较弱的功能非常有趣移动和嵌入式等设备。 除此之外,它是Google Guice的开发人员发明的,但是使用注入方法的方式较少。

在第一步中,您必须将dagger依赖项添加到您的maven pom(或gradle构建文件)中:

gluon_ignite_dagger_maven

之后,执行mvn clean并安装或右键单击并选择:“ reload pom”和“ clean and build”。 现在,您可以通过创建一个新字段开始将其集成到JavaFX主应用程序中:

dagger_context_field

DaggerContext类带有以前添加的maven依赖项形式。 它的实例化将JavaFX Main类(this)作为第一个参数,将DaggerModule作为第二个参数。 必须手动创建此模块:

dagger_module

创建DaggerModules时,必须使用@Module注释对Module类进行注释,并且还必须注入JavaFX Main类(在本示例中为MainApp.class)。

如果还想注入FXMLLoader对象,则必须创建一个带有@Provices注释的方法,该方法返回FXMLLoader实例。

在注入其他对象的情况下,有两种注入方法。 您可以向dagger模块添加其他provider方法,例如:

dagger_sample_controller_class

或者,您可以在SampleController类中创建一个标准的无参数构造函数,并使用@Inject进行注释,例如:

dagger_module_sample

如果您不执行此步骤之一,则JavaFX Main类不会编译,因为Dagger使用生成的代码来注入相应的类,而不是像其他Dependency Frameworks那样大量使用反射。

链接和进一步阅读

  1. http://gluonhq.com/open-source/ignite/
  2. http://square.github.io/dagger/
  3. https://www.youtube.com/watch?v=hBVJbzAagfs

Gluon Ignite提供了一种非常好的方法,可以在JavaFX应用程序中集成不同的Dependency Framework。 除此之外,使用Gluon Ignite更改相应的DI真的很容易。 试试看!

翻译自: https://www.javacodegeeks.com/2016/01/dependency-injection-javafx-gluon-ignite-dagger.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

checkbox对齐排列

checkbox对齐排列<span style"width: 120px;display: inline-block"><lable><input type"checkbox"/></lable> </span>常用的 display 可能的值&#xff1a;

动态增删表单

动态增删表单1.实现效果 2.两种方式&#xff0c;推荐第二种&#xff08;不管是第一种还是第二种&#xff0c;想要序列化都必须&#xff0c;id不同&#xff09; &#xff08;1&#xff09;表单clone的方式&#xff08;简单演示&#xff0c;道理相通&#xff09; <div id&quo…

策略模式(组件协作模式)

策略模式&#xff08;组件协作模式&#xff09; 策略模式实例代码 注解 目的 正常情况下&#xff0c;一个类/对象中会包含其所有可能会使用的内外方法&#xff0c;但是一般情况下&#xff0c;这些常使用的类都是由不同的父类继承、组合得来的&#xff0c;来实现代码的复用&…

java11+osgi_错误学习:Java + OSGi

java11osgi最近&#xff0c;我致力于在OSGi环境中使Apache Hive工作。 虽然没有被证明是小菜一碟&#xff08;软件对吗&#xff1f;。。为什么我不感到惊讶&#xff1f; &#xff09;&#xff0c;它引导我解决了各种Java和OSGi错误。 在这里&#xff0c;我列出了其中一些让我有…

集群没有leader_ZooKeeper 集群中 Leader 与 Follower 的4种数据同步策略

首先要声明一点&#xff0c;zk集群中&#xff0c;leader服务器有着比较重要的存在&#xff0c;Follower 服务器只是处理非事务性请求&#xff0c;leader服务器主要负责事务性请求&#xff0c;Follower 服务器在遇到事务性请求以后还是会转发给leader服务器处理&#xff0c;所以…

JavaOne 2015:高级模块化开发

JavaOne 2015看到了Project Jigsaw团队关于Java 9中的模块化的一系列讨论 。它们都是非常有趣的&#xff0c;并且充满了宝贵的信息&#xff0c;我敦促每个Java开发人员都注意它们。 除此之外&#xff0c;我想给社区一种搜索和引用它们的方法&#xff0c;因此我在这里总结一下&…

action怎么获得 ajax date参数_ajax()gt;load()事件的新用法!!!

load()函数用于从服务器加载数据&#xff0c;并使用返回的html内容替换当前匹配元素的内容。load()函数默认使用GET方式&#xff0c;如果提供了对象形式的数据&#xff0c;则自动转为POST方式。load()函数只会替换每个匹配元素的内部内容(innerHTML)。你还可以在URL字符串后面追…

无显示器u盘安装centos_最新版 CentOS 8.1.1911 安装教程及常见问题图文详解

基于笔记本(华硕)操作&#xff0c;使用软碟通(UltraISO)制作的系统启动盘(U盘&#xff0c;内存大于8G)操作可自行百度&#xff0c;非常简单(或可留言&#xff0c;择情况出一期U盘制作启动盘教程)。a、登录 centos 官网下载镜像文件官网地址&#xff1a;https://www.centos.org阿…

bom实现方块移动_从0开始实现一个俄罗斯方块

写在前面得话&#xff1a;这篇文章主要记录了我是怎么一步一步写出俄罗斯方块&#xff0c;整个代码用的函数编程&#xff0c;主要是为了让一些不熟悉es6, 面向对象写法得 新手能更容易看明白&#xff0c;全部得代码中都是一些js的基础知识&#xff0c;很容易理解。要说有点麻烦…

cli3解决 ie11语法错误 vue_基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册...

项目地址&#xff1a;https://github.com/caochangkui/vue-element-responsive-demo/tree/login-register通过 vue-cli3.0 Element 构建项目前端&#xff0c;Node.js Koa2 MongoDB Redis 实现数据库和接口设计&#xff0c;包括邮箱验证码、用户注册、用户登录、查看删除用户…

gwt 嵌入html_GWT和HTML5画布演示

gwt 嵌入html这是我对GWT和HTML5 Canvas的第一个实验。 我的第一个尝试是创建矩形&#xff0c;仅用几行代码就得出了这样的内容&#xff1a; 码&#xff1a; public class GwtHtml5 implements EntryPoint {static final String canvasHolderId "canvasholder";sta…

tez什么意思_传统数仓和大数据数仓的区别是什么?

概念与容器为什么先说这个&#xff0c;其实很简单&#xff1a;因为绝大多数人都把这两个概念混为一谈。然后就会出现各种各样的问题&#xff1a;oracle不是数据库么&#xff0c;怎么又是数据仓库&#xff1f;Hive不是数据仓库么&#xff1f;怎么又是数据库&#xff1f;数据仓库…

华为M2平板打不开云课堂_能运行PC应用的安卓生产力平板:华为MatePad Pro 5G登场...

当手机屏幕无法承担更复杂的工作任务&#xff0c;当PC重量不能满足更随性的移动办公&#xff0c;拥有全面屏和便携优势的平板电脑或是中间值&#xff0c;但前提是其必须拥有足够强大的生产力。5月27日华为在国内上市的其首款5G平板——华为MatePad Pro 5G&#xff0c;就是5G时代…

soa示例_SOA示例应用程序

soa示例SOA描述了一组用于创建松散耦合的&#xff0c;基于标准的&#xff0c;与业务相关的服务的模式&#xff0c;由于描述&#xff0c;实现和绑定之间的关注点分离&#xff0c;因此提供了新的灵活性。 近年来&#xff0c;至少在参与大多数信息技术活动的人们中&#xff0c;面向…

body curl 设置post_curl 命令详解

常用参数常用参数分类# 调试类-v, --verbose 输出信息-q, --disable 在第一个参数位置设置后 .curlrc 的设置直接失效&#xff0c;这个参数会影响到 -K, --config -A, --user-agent -e, --referer-K, --config FILE …

NetBeans Java EE技巧7:忽略的Java类和XHTML编辑器快捷方式

有时&#xff0c;最被忽略的是IDE最有用的功能。 在本文中&#xff0c;我将概述在开发Java EE应用程序时可以使用的五个NetBeans Java和XHTML编辑器快捷方式。 &#xff03;1 –轻松修复命名空间和类 也许您已经向尚未声明名称空间的视图中添加了新的JSF标记&#xff0c;或者…

python学习第三十二节(进程间通信、进程池、协程)

当多线程创建完毕之后&#xff0c;start并没有了立刻运行&#xff0c;依旧需要和其他线程抢CPU的资格&#xff0c;只是时间很短。进程之间的通信分为两种&#xff0c;queue和pipe 1 import multiprocessing2 def foo(q):3 q.put([1,hello,True])4 if __name____main__:5 …

备份ad_IT管理公开课——备份恢复解决方案

时间&#xff1a;2020年5月28日 14:00内容&#xff1a;调查显示&#xff0c;44&#xff05;的客户面临意外删除或修改数据&#xff0c;如果没有提前备份&#xff0c;这些数据是很难恢复的。RecoveryManager Plus是一款针对AD域&#xff0c;Exchange&#xff0c;Sharepoint以及O…

Ajax中的url使用规则

Ajax中的url使用规则Ajax中的url使用规则如下&#xff1a; 先封装项目访问地址&#xff1a; String basePath request.getScheme() "://" request.getServerName() ":" request.getServerPort() request.getContextPath();然后在js中定义&#xff1…

[网络管理]全双工与半双工的差别

[网络管理]全双工与半双工的差别 同事说新办公室的网络一直不稳定&#xff0c;常常掉线延迟。检查进口线路和更换转接网线。都无法解决这个问题。预计是不是进口网线中一根或者2根短路&#xff0c;那就改动下网卡属性吧。 把自适应改成全双工10M模式&#xff0c;測试OK。全双工…