基本注射/资格赛,范围

这是上周解决的DI / CDI基础知识的延续-在本文中,我将讨论基础注入,限定词和范围。

在上一个主题中,我们提供了有关DI / CDI概念的大量信息,我们还讨论了如何使用注释加载这些bean或类-这构成了对象的组成并创建了关于如何进行采样的示例。以编程方式声明它们。 在本文中,我们将在注入部分进行更多讨论,即如何获取特定资源并将其注入另一资源以供使用。

那么如何首先注入一个豆子呢?

基本注射

您如何注入豆?

  • 使用@Inject <Java-Type> <variable>进行字段注入
  • <Java-Type>可以是Java类或Java接口
public class MyGreeter {// Inject Greeting object for field injection@Inject Greeting greeting;public sayGreeting(String name){// You can then used the injected Greeting objectSystem.out.println(greeting.greet(name)); }
}

哪里可以注入豆子?

可以在“注入点”注入豆

  • 领域
  • 方法参数

方法可以是:

  • 构造函数(对创建的不可变对象有用)>初始化程序
  • 设置方法
  • 制片人
  • 观察者
public class MyGreeter {private Greeting greeting;// Use constructor method injection@Injectpublic MyGreeter(Greeting greeting) {this.greeting = greeting; }public sayGreeting(String name){System.out.println(greeting.greet(name)); }
}

资格赛

如果存在多种实现类型(接口和子类),则限定符用于分配特定的bean。 假设您有两个特定接口的候选对象(实现类):

  • 界面是人
  • 第1类是普通人
  • 第2类是非正规人士

c_diagram_person

我们可以通过引入/创建自己的Qualifier批注来使用Qualifiers明确指定类的实现:

RegularPerson Qualifier批注:

p_qualifier

NonRegularPerson限定符注释:

non_reg_qualifier

现在,我们需要创建一个实现类并将其标记到我们创建的Qualifier中。

RegularPersonImpl:

regular_impl

NonRegularPersonImpl:

non_reg_impl

注意:可以有尽可能多的限定符–请记住,限定符是用于将逻辑对象实现与其公共接口分开的。

现在已经设置了实现,我们现在可以注入类并使用其限定符。

展示

在此示例中,您可以清楚地看到用法,通过引入Qualifier,开发人员可以通过注释明确指定实现类型。

在此处下载示例。

您可以利用预选赛做其他事情吗?

我将不进一步讨论限定词的其他用途,相反,我将让您检查以下示例,以尝试并探索:

  • 多个预选赛
  • 带有属性的限定词
  • 具有多个属性的限定符

范围

为什么首先需要在对象上作用域? –对于Web应用程序,我们需要我们的bean在用户与应用程序交互的持续时间内保持状态,例如,跨多个对服务器的请求。

开发人员可以分配给对象的作用域有5种类型:

  • @Dependent(默认)
    • 默认范围(如果未指定);
  • @RequestScoped
    • 在单个HTTP请求中用户与Web应用程序交互期间,将维护对象的状态。
  • @SessionScoped
    • 在多个HTTP请求之间用户与Web应用程序进行交互期间,将维护对象的状态。
  • @ApplicationScoped
    • 所有用户与Web应用程序交互中的共享状态。
  • @ConversationScoped
    • 会话上下文由应用程序明确划分

我不会在这里详细介绍,但是我将为您提供可以运行的实际示例。 在此处下载项目。

  • 依附
  • 请求
  • 届会
  • 应用
  • 会话

下一站:DI / CDI –前进

使用此新功能,您可以清楚地观察和想象通过简化许多设置Web应用程序的过程来提高开发人员的生产率–可以创建限定符以明确区分具有共同目标(按接口)的逻辑/业务Bean,进行范围界定让开发人员控制流程并管理对象的状态–通过UI直接通过EL调用bean的简化使其更简单。

请检查示例并自行尝试,最好检查一个实际示例,而不是只阅读详细信息和概念。 请享用!

参考: 基本注射/资格赛,我们的JCG合作伙伴 Alvin Reyes在Alvin“ Jay” Reyes博客博客上的范围。

翻译自: https://www.javacodegeeks.com/2013/08/basic-injection-qualifiers-scope.html

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

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

相关文章

100*100的 canvas 占多少内存?

题目 100*100的 canvas 占多少内存&#xff1f; 在 三年前端&#xff0c;面试思考 中提到了一个题目&#xff0c;非常有新意&#xff0c;这里分享一下当时面试的思考过程。 解题思路 其实真正的答案是多少我并不清楚&#xff0c;面试过程中面试官也不期待一个准确的答案&am…

1t硬盘怎么分区最好_这下尴尬了,电脑硬盘分区常见误区,移动硬盘分区方法...

大家买了新电脑硬盘要不要分区呢&#xff1f;像以往咱们买了新电脑一般会分4个区&#xff0c;C、D、E、F&#xff0c;方便更合理的分类使用&#xff0c;比如把工作放为D盘&#xff0c;娱乐影音放为E盘&#xff0c;游戏放为F盘&#xff0c;C盘为系统盘。不过渐渐地发现&#xff…

用Spring长轮询Tomcat

就像喜剧演员弗兰基 豪威尔 &#xff08; Frankie Howerd&#xff09;所说的“哦&#xff0c;小姐小姐” &#xff0c;但足够多的英国影射和双重诱惑&#xff0c;因为长轮询雄猫对隔壁的闷气不是某种性偏见&#xff0c;这是一种技术&#xff08;或更像是一种骇客&#xff09;由…

exchange 删除邮件

一 批量删除特定主题的邮件1.1 批量删除所有数据库中特定主题的邮件1) 群发了几封主题为“backup”的邮件&#xff1b; 2) 当前操作账号需要满足如下需求&#xff1a; a)该账号需属于Exchange Server 管理员角色以及源服务器和目标服务器的本地 Administrator组&#xff1b; b)…

js点击取消按钮关闭当前弹框_UI设计中“取消按钮”的分析详解

按钮&#xff0c;无论是在 Web 还是 App 上都被广泛地使用&#xff0c;而很少有设计师会注意到按钮当中的细节&#xff0c;导致在设计过程中出现一些低级的错误&#xff0c;使得用户在完成任务的过程中产生阻碍&#xff0c;无法顺利达成目的。在许多优秀的产品中&#xff0c;关…

MATLAB飞机大战第二版,windows程序设计——飞机大战札记(单文档文件登陆界面)...

windows程序设计——飞机大战笔记(单文档文件登陆界面)//2015/07/21/by xbw////环境 VS 2013飞机大战做的差不多了&#xff0c;闲来无事加点高大上的东西&#xff0c;关于单文档的登陆界面&#xff1b;&#xff1b;&#xff1b;界面有点丑&#xff0c;但是足够账号登陆了&#…

吸收Mockito的流利度

我最近发现自己编写了一些代码来集成两个不同的平台。 这些系统之一是基于Java的系统&#xff0c;而另一个虽然不是用Java编写的&#xff0c;却提供了Java API。 我将这些系统分别称为Foo和Bar。 在编写一行代码之前就很明显了&#xff0c;但是&#xff0c;测试最终的适配器将…

软件工程第三次作业

题目要求 最大连续子数组和&#xff08;最大子段和&#xff09; 问题&#xff1a; 给定n个整数&#xff08;可能为负数&#xff09;组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]a[i1]…a[j]的子段和的最大值。 当所给的整数均为负数时定义子段和为0&#xff0c;依此定义&a…

使用HTML5 IndexDB存储图像和文件

使用IndexedDB存储图像和文件 有一天&#xff0c;我们写了关于如何在localStorage中保存图像和文件的文章&#xff0c;它是关于我们今天可用的实用主义。 然而&#xff0c;localStorage有一些性能影响 - 我们将在稍后的博客中讨论这个问题 - 并且未来期望的方法是使用IndexedD…

Gitlab 项目上传

一&#xff0c;登陆gitab&#xff0c;新建reject Repository name: 仓库名称 Description(可选): 仓库描述介绍 Public, Private : 仓库权限&#xff08;公开共享&#xff0c;私有或指定合作者&#xff09; Initialize this repository with a README: 添加一个README.md gitig…

stm32f103r6最小系统原理图_超强PCB布线设计经验谈附原理图

在当今激烈竞争的电池供电市场中&#xff0c;由于成本指标限制&#xff0c;设计人员常常使用双面板。尽管多层板(4层、6层及8层)方案在尺寸、噪声和性能方面具有明显 优势&#xff0c;成本压力却促使工程师们重新考虑其布线策略&#xff0c;采用双面板。在本文中&#xff0c;我…

[UE4GamePlay架构(九)GameInstance(转)

GameInstance这个类可以跨关卡存在&#xff0c;它不会因为切换关卡或者切换游戏模式而被销毁。然而&#xff0c;GameMode和PlayController就会再切换关卡或者游戏模式时被引擎销毁重置&#xff0c;这样他们里面的状态就不能被保存。比如&#xff0c;你想再下一个关卡中知道上一…

灵格斯怎么屏幕取词_电脑包尺寸怎么选?手提的好还是双肩的好?比较推荐哪款电脑包?...

在携带笔记本电脑的时候&#xff0c;一般都会用到电脑包&#xff0c;那么电脑包的尺寸该怎么选呢&#xff1f;为了能更好的装下电脑&#xff0c;电脑包的尺寸必须要比笔记本电脑的尺寸大一些&#xff0c;而不能刚刚好。笔记本的尺寸参数一般是指屏幕尺寸&#xff0c;而整个机身…

JSBridge实战

前言 H5 VS Native 一直是前端技术界争执不下的话题。react、vue等技术栈引领着纯H5开发&#xff0c;rn、week则倡导原生体验。但在项目实战中&#xff0c;经常会选择一个中立的方案&#xff1a;混合开发。大众称呼&#xff1a;Hybrid。 本人目前从事新闻类产品研发&#xff…

单元测试Java Hadoop作业

在我以前的文章中&#xff0c;我展示了如何设置一个完整的基于Maven的项目&#xff0c;以用Java创建Hadoop作业。 当然并没有完成&#xff0c;因为它缺少单元测试部分。 在本文中&#xff0c;我将展示如何将MapReduce单元测试添加到我之前开始的项目中。 对于单元测试&#xff…

vue2.0中的:is和is的区别

此文首发于 https://lijing0906.github.io/ 最近&#xff0c;工作之余在翻阅vue.js的官方文档&#xff0c;在查看到动态组件和解析 DOM 模板时的注意事项的时候&#xff0c;讲到一个特殊的is特性&#xff0c;觉得很有意思&#xff0c;就来写一篇自己理解的总结。 现场 写栗子…

mysql复制模式第二部分-----双主模式

双主配置 我在配置主从服务器时&#xff0c;使用了两台服务器&#xff1a;10.19.34.126和10.19.34.91。 1、首先需要在这两台上搭建单独的mysql服务masterA和masterB。 2、配置数据库masterA&#xff0c;要对每一个数据库服务配置唯一标示&#xff0c;参数名为server-id&#x…

pde中微元分析法的主要思想_初中数学常用的思想方法丨所有题型的考试技巧最全整理,高分必备...

【导语】初中数学虽然是基础数学&#xff0c;但是这并不意味着就没有难度&#xff0c;特别是在素质教育下&#xff0c;从培养学生综合素质能力的角度出发&#xff0c;初中数学越来越重视数学思维的培养&#xff0c;因此在很多数学问题的设置上&#xff0c;都进行了相当难度的调…

解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以及tomcat日志乱码]...

一、控制台打印的程序运行时的log4j日志中包含中文乱码 在IDEA安装目录的bin目录下找到名为"idea.exe.vmoptions"的文件&#xff1a; 使用文本编译软件(Notepad等)打开此文件&#xff0c;在文件内容从末尾追加一行设置&#xff08;-Dfile.encodingUTF-8&#xff09;&…

php识别地址,实现地址自动识别实例(PHP)

具体问题具体分析&#xff01;代码实现基于laravel完成。一个laravel完整的功能得具备这些&#xff1a;路由route&#xff0c;Model, View, Controller, 我这里用的有依赖注入服务容器等功能&#xff0c;当然&#xff0c;用到地址&#xff0c;你首先要有地址库。。。下面来看看…