本文目錄一覽:
java循環注入的問題該怎麼解決?
加AOP能解決spring IoC的循環引用。
循環引用是你配置bean的時候,構建方式上出了錯。比如,創建A對象的時候,你引用到了B,而創建B對象的時候,你又引用到了A。你仔細檢查下你的構造器
循環依賴——在採用構造器注入的方式配置bean時,很有可能會產生循環依賴的情況。比如說,一個類A,需要通過構造器注入類B,而類B又需要通過構造器
注入類A。如果為類A和B配置的bean被互相注入的話,那麼Spring IoC容器將檢測出循環引用,並拋出
BeanCurrentlyInCreationException異常。對於此問題,一個可能的解決方法就是修改源代碼,將某些構造器注入改為
setter注入。另一個解決方法就是完全放棄構造器注入,只使用setter注入。換句話說,除了極少數例外,大部分的循環依賴都是可以避免的,不過採用setter注入產生循環依賴的可能性也是存在的。與通常我們見到的非循環依賴的情況有所不同,在兩個bean之間的循環依賴將導致一個bean在被完全初始化的時候被注入到另一個bean中。
java類注入到另一個
方法如下:
如果另一個類是在寫的java文件夾下,就直接new一個對象,然後調用方法就好,如果不是在本文件夾下,就需要在代碼最前面添加該包,然後new對象,最後調用方法。
如何通俗的理解java的依賴注入
假設你編寫了兩個類,一個是人(Person),一個是手機(Mobile)。
人有時候需要用手機打電話,需要用到手機的callUp方法。
傳統的寫法是這樣:
Java code
public class Person{
public boolean makeCall(long number){
Mobile mobile=new Mobile();
return mobile.callUp(number);
}
}
也就是說,類Person的makeCall方法對Mobile類具有依賴,必須手動生成一個新的實例new Mobile()才可以進行之後的工作。
依賴注入的思想是這樣,當一個類(Person)對另一個類(Mobile)有依賴時,不再該類(Person)內部對依賴的類(Moblile)進行實例化,而是之前配置一個beans.xml,告訴容器所依賴的類(Mobile),在實例化該類(Person)時,容器自動注入一個所依賴的類(Mobile)的實例。
接口:
Java code
public Interface MobileInterface{
public boolean callUp(long number);
}
Person類:
Java code
public class Person{
private MobileInterface mobileInterface;
public boolean makeCall(long number){
return this.mobileInterface.callUp(number);
}
public void setMobileInterface(MobileInterface mobileInterface){
this.mobileInterface=mobileInterface;
}
}
在xml文件中配置依賴關係
Java code
bean id=”person” class=”Person”
property name=”mobileInterface”
ref local=”mobileInterface”/
/property
/bean
bean id=”mobileInterface” class=”Mobile”/
這樣,Person類在實現撥打電話的時候,並不知道Mobile類的存在,它只知道調用一個接口MobileInterface,而MobileInterface的具體實現是通過Mobile類完成,並在使用時由容器自動注入,這樣大大降低了不同類間相互依賴的關係。
java依賴注入的方法:set注入,構造方法注入,接口注入。
javaservice注入service合理嗎
javaservice注入service合理。javaservice注入service在開發中,如果出現問題的時候,可以同時處理。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/184029.html