注入JavaEECDI方式的依赖注入方法(培训范文)

依赖注入  时间:2021-02-08  阅读:()

实用范文

《JavaEECDI方式的依赖注入方法》Word格式可编辑含目录

精心整理放心阅读欢迎下载

文档信息

JavaEECDI方式的依赖注入方法

目录

2.构造器依赖注入

3.字段依赖注入

4.初始化方法依赖注入

6.注入到生产者方法中

7. CDI代理

正文

Java EE CDI方式的依赖注入方法

Java EE CDI主要使用@Inject注解来实现依赖注入把受管理的bean注入到由容器管理的其它资源中去。在本教程中我们将会介绍在CD I环境下几种不同的可选策略来实现依赖注入。

本教程基于如下环境

JDK

Weld

Weld是CDI的参考实现。

2.构造器依赖注入

public class SomeBean {private final Service service;

@Injectpublic SomeBean(Service service)

= service;

当CDI容器在初始化一个S omeBean类型的bean实例时它将会查找该类的默认构造器(无参构造器)并用它来创建bean实例。但是有一个例外情况就是当我们还有一个使用@Inject进行了注解的构造器时这种情况下容器会改用有注解的构造器而不是无参构造器并且把通过构造器参数传入的依赖资源注入到b e an实例中来。

注意:记住一个类只允许有一个@Inject注解的构造器。

在上面的例子中容器将会获取到一个Service的实例并把它注入到SomeBean的注解构造器中。

3.字段依赖注入public class SomeBean {

@Injectprivate Service service;

这种情况下 当容器初始化一个SomeB ean类型的b ean时它会把一个正确的Service实例注入给该字段 即使该字段是一个私有字段并且不需要有任何setter方法。

4.初始化方法依赖注入public class SomeBean {private Service service;

@Injectpublic void setService(Service service) {

= service;

这种情况下 当容器初始化一个SomeB ean类型的b ean时它会调用所有由@Inject注解了的方法并且通过方法参数的方式把依赖注入进来。

@Any修饰符

为了提供完全松耦合的应用我们通常把接口注入到受管理的资源中。当我们有多个实现了给定接口的bean时该怎么办呢?我们可以同时使用@Any修饰符和CDI的Itance接口来把所有该接口的实现b ean都注入进一个受管理的b ean中

The @Any qualifier

public class SomeBean {

@Injectpublic void listServiceImplementatio(

@Any Itance serviceList) {for(Service service : serviceList)

( () .getCanoni calName(

@Any修饰符告诉容器任何可供使用的依赖都适用于该注入点所以容器会把他们都注入进来。 如果我们有接口的多个实现而我们只注入其中的一个-并且没有做任何排除工作-那么容器将会抱怨并且无法成功的初始化组件。我们将会在其他教程中介绍依赖排除问题。

6.注入到生产者方法中

生产者方法的参数也可以经由CDI容器进行注入。请查看Java EECDI Producer methods tutorial。

7. CDI代理

如果我们不涉及CDI代理机制那么本教程将是不完整的。当我们把一个在不同于@Dependent范围下创建出来的bean注入到另外一个托管资源时 CD I容器不会注入一个被注入bean的直接引用。

CDI中bean的范围请看Java EE CDI bean scopes

为什么CDI使用代理?因为如果bean的直接引用被注入将会给被管理的b ean造成诸如线程安全或并发访问的问题。

设想一下一个Session范围的bean被注入到一个Application范围的bean中去的情形。 由于appl ication范围的bean在所有客户端间共享如果多个客户端同时访问一个application范围的bean那么将会存在很高的风险出现这种情况一个客户端访问了其他客户端正在访问的session范围的bean。

为了处理这种问题 CDI创造了代理并把代理注入进注入点。 由代理负责处理对被注入b e an的调用并实际去调用正确的b ean实例。

CDI创建的代理继承自被注入bean的类型。设想一下下面的情形

Application和Session范围的bean

@Sessiocopedpublic class Service {public void doWork() {

("Working.

@Applicatiocoped

public class SomeBean {

@Injectprivate Service service;public void test(

CDI将把一个session范围的bean的代理注入进一个application范围的'bean中去。每一次对session范围bean的调用都将通过代理进行代理会把调用重定向到正确的session范围bean的实例那个从属于正确的HTTP request session的bean。

CDI创建代理是通过继承原来bean的类并重写所有非私有方法。一个简单的典型的代理的例子可以像下面这样

CDI代理示例ublic class Service$Proxy$_$$_WeldClientProxyextends Service {

@Overridepublic void doWork() {

Service itance = . . . resolve bean itance

由于CDI代理通过继承bean的类来创建所以当我们讨论非依赖性bean范围的时候你应当明白CD I有如下一些限制

CDI不能注入原始类型bean的类必须有一个非私有的默认构造器bean的类不能是f inal类型的并且不能有任何f inal方法

为提高学习交流本文整理了相关的实用范文有 《JavaEE新手入门》 、

《JavaEE性能的测试与调优》 、 《JavaEE开发常用框架》 、 《影响JavaEE性能的因素》 、 《j2ee与java的区别》 、 《j2ee与java web的区别》 、 《Java EE的Web服务体系结构》 、 《Java多线程的实现方式》 读者可以在平台上搜索。

“Ja vaEECDI方式的依赖注入方法”文档源于网络本人编辑整理。本着保护作者知识产权的原则仅供学习交流请勿商用。如有侵犯作者权益请作者留言或者发站内信息联系本人我将尽快删除。谢谢您的阅读与下载

A400互联(49元/月)洛杉矶CN2 GIA+BGP、1Gbps带宽,全场独服永久5折优惠

a400互联是一家成立于2020年商家,主营美国机房的产品,包括BGP线路、CN2 GIA线路的云服务器、独立服务器、高防服务器,接入线路优质,延迟低,稳定性高,额外也还有香港云服务器业务。当前,全场服务器5折,香港VPS7折,洛杉矶VPS5折,限时促销!A400互联官网:https://a400.net/优惠活动全场独服永久5折优惠(续费同价):0722香港VPS七折优惠:0711洛杉矶VPS五...

域名注册需要哪些条件(新手注册域名考虑的问题)

今天下午遇到一个网友聊到他昨天新注册的一个域名,今天在去使用的时候发现域名居然不见。开始怀疑他昨天是否付款扣费,以及是否有实名认证过,毕竟我们在国内域名注册平台注册域名是需要实名认证的,大概3-5天内如果不验证那是不可以使用的。但是如果注册完毕的域名找不到那也是奇怪。同时我也有怀疑他是不是忘记记错账户。毕竟我们有很多朋友在某个商家注册很多账户,有时候自己都忘记是用哪个账户的。但是我们去找账户也不办...

特网云,美国独立物理服务器 Atom d525 4G 100M 40G防御 280元/月 香港站群 E3-1200V2 8G 10M 1500元/月

特网云为您提供高速、稳定、安全、弹性的云计算服务计算、存储、监控、安全,完善的云产品满足您的一切所需,深耕云计算领域10余年;我们拥有前沿的核心技术,始终致力于为政府机构、企业组织和个人开发者提供稳定、安全、可靠、高性价比的云计算产品与服务。公司名:珠海市特网科技有限公司官方网站:https://www.56dr.com特网云为您提供高速、稳定、安全、弹性的云计算服务 计算、存储、监控、安全,完善...

依赖注入为你推荐
优酷路由宝怎么赚钱优酷路由宝是如何赚钱的?最新qq空间代码qq空间最新免费代码ps抠图技巧photoshop最基本的抠图方法和技巧!今日热点怎么删除今日热点怎么卸载删除 今日热点新闻彻底卸载删创维云电视功能创维电视怎么用,我买了个创维云电视,现在不知道怎么用手机往电视上传照片,谁能解答以下,idc前线求电影敢死队电影里的歌曲!宽带接入服务器网络已连接,可无法连接到服务器为什么?网络已连接,可无法连接到服务服务器连接异常手机WIFI检查显示主服务器连接异常,怎么办网站排名靠前怎样才能做好一个网站?让网站排名靠前?新手求解freebsd安装FreeBSD下如何安装ports的方法
Oray域名注册服务商 网通服务器租用 流媒体服务器 外国域名 搜狗抢票助手 魔兽世界台湾服务器 美国十次啦服务器 刀片服务器的优势 hkg 美国网站服务器 申请网站 跟踪路由命令 web应用服务器 游戏服务器出租 杭州电信宽带优惠 国外网页代理 杭州电信 美国代理服务器 godaddy退款 月付空间 更多