当前位置:首页>开发>正文

Spring是怎么解决Bean之间的循环依赖的 spring2.0中循坏依赖怎么解决

2023-04-19 09:15:43 互联网 未知 开发

 Spring是怎么解决Bean之间的循环依赖的 spring2.0中循坏依赖怎么解决

Spring是怎么解决Bean之间的循环依赖的

加AOP能解决spring IoC的循环引用么? 循环引用是你配置bean的时候,构建方式上出了错。比如,创建A对象的时候,你引用到了B,而创建B对象的时候,你又引用到了A。你仔细检查下你的构造器 循环依赖——在采用构造器注入的方式配置bean时

spring2.0中循坏依赖怎么解决

如果是循环依赖,我建议你好好检查一下自己的设计是不是有问题,个人感觉设计的好可以避免这个问题
在设计时,首先设定一个主模块,然后如果需要使用其他的模块,则子模块中全部采用调用思想。
再有,在DAO层不要牵涉使用其他的DAO,松散耦合,使用逻辑层去调用,这样你再操作的时候就绝对不会出现DAO层的循环依赖,而业务层是不可能循环依赖的,如果出现绝对是设计上出的问题。
例如:
UserDao中只有一个session的注入
而UserEbo操作时,可以注入所有相关的数据层,这样就永远不会出问题了

spring的依赖注入怎么理解

先看一段代码
假设你编写了两个类,一个是人(Person),一个是手机(Mobile)。
人有时候需要用手机打电话,需要用到手机的dialUp方法。
传统的写法是这样:

Java code

public class Person{
public boolean makeCall(long number){
Mobile mobile=new Mobile()
return mobile.dialUp(number)
}
}
也就是说,类Person的makeCall方法对Mobile类具有依赖,必须手动生成一个新的实例new Mobile()才可以进行之后的工作。
依赖注入的思想是这样,当一个类(Person)对另一个类(Mobile)有依赖时,不再该类(Person)内部对依赖的类(Moblile)进行实例化,而是之前配置一个beans.xml,告诉容器所依赖的类(Mobile),在实例化该类(Person)时,容器自动注入一个所依赖的类(Mobile)的实例。
接口:

Java code

public Interface MobileInterface{
public boolean dialUp(long number)
}
Person类:

Java code

public class Person{
private MobileInterface mobileInterface
public boolean makeCall(long number){
return this.mobileInterface.dialUp(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类完成,并在使用时由容器自动注入,这样大大降低了不同类间相互依赖的关系。

Spring 的依赖注入是什么意思?

如楼上所说
“依赖注入就是通过配置文件解决代码问题





这种方式是设置注入 (又称 setter注入)
相当于一个bean工厂,工厂帮你创建好了这个bean对象,然后调用了
setMessage方法将"Hello" 设置到了你的bean对象当中

最新文章