java cdi是什么意思_Java EE CDI的真正好处
我是Java EE的新手,我想知道使用CDI(@ Named,@ Inject)的真正好處是什么.當(dāng)然我在問谷歌.但是我總是得到諸如“松散耦合”和“更好測(cè)試”之類的通用答案.但是我認(rèn)為要實(shí)現(xiàn)松散耦合,不需要任何框架.
在我的小項(xiàng)目中,我使用三個(gè)類
public interface UserIf
{
...
}
@Named
public class User implements UserIf
{
...
}
public class Main
{
@Inject
UserIf user;
}
現(xiàn)在,我可以輕松注入U(xiǎn)serIf的另一個(gè)實(shí)現(xiàn).但我也可以做到
public class Main
{
UserIf user = new User();
}
該體系結(jié)構(gòu)也很容易更改.只需編寫UserIf的另一個(gè)實(shí)現(xiàn)并更改
UserIf user = new User();
至
UserIf user = new AnotherUserImpl();
我在這里看不到使用CDI的好處.當(dāng)我考慮一個(gè)由一些EJB和WAR組成的更大的EAR項(xiàng)目時(shí),如果某些模塊(EJB,WAR)是松散耦合的,那么也許更容易重用它們.但是據(jù)我所知,如果這些類不在同一jar / war中,則無法使用CDI.那么,使用CDI會(huì)獲得真正好處的真正設(shè)置是什么?
赫爾姆森的問候
解決方法:
關(guān)鍵是,如果您需要例如重命名AnotherUserImpl或想要切換到其他實(shí)現(xiàn),則不必轉(zhuǎn)到所有使用此impl的類并將其重命名.有了CDI限定詞,您到處都有
@Inject
@AnotherUser
private User user;
客戶代碼對(duì)用戶的實(shí)現(xiàn)一無所知,因此您可以在業(yè)務(wù)方面隨意更改它,而客戶甚至不會(huì)注意到.松散耦合的原理是,使用您的API的客戶端實(shí)際上并不了解實(shí)現(xiàn),這是在外部配置的(例如CDI Producers或Spring XML配置). CDI還具有其他好處,例如生產(chǎn)者,攔截者,新的交易API,替代品或其他.
標(biāo)簽:dependency-injection,cdi,java
來源: https://codeday.me/bug/20191029/1958759.html
總結(jié)
以上是生活随笔為你收集整理的java cdi是什么意思_Java EE CDI的真正好处的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python边缘检测代码_Python中
- 下一篇: 燕京理工学院java期末_英华学堂燕京理