Spring中父类的依赖可自动注入到子类中吗?

hzl37du3 2009-09-03 09:42:19
比如有类A和类B,
public class A {
String a;
String b;
//a和b的get,set方法
.....
}
public class B extends A{
String c;
String fn(){
return a+b+c;
}
}


现在在a.xml中配置好A,并注入属性 a和b
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<bean id="bean1" class="A">
<property name="a">
<value>1</value>
</property>
<property name="b">
<value>2</value>
</property>
</bean>
</beans>

在b.xml中配置B

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<bean id="bean2" class="B">
<property name="c">
<value>3</value>
</property>

</bean>
</beans>

现在,Spring初始化a.xml,b.xml。获取Bean B后,调用其b.f()方法却输出“3”,可是我希望它输出“123”,因为我需要B的父类即A的依赖自动传递给B,那么我该如何配置?(a.xml和b.xml不能合并)

如果用parent的话是可以解决,但我看有个项目例子不用parent,不知道是什么原因?请知道的回答一下,谢谢。
...全文
939 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
myairland 2009-09-03
  • 打赏
  • 举报
回复
用parent就是再注入一次,等同于下面的代码,不用parent的话可以实现嘛?关注
<bean id="bean2" class="B">
<property name="a">
       <value>1</value>
    </property>
    <property name="b">
       <value>2</value>
    </property>
<property name="c">
<value>3</value>
</property>
</bean>
feishare 2009-09-03
  • 打赏
  • 举报
回复
a.xml和b.xml中class属性弄反了~~~
feishare 2009-09-03
  • 打赏
  • 举报
回复
再设置一个parent.xml
<beans>
<bean id="abstractbean" abstract=true>
<property name="a">
<value>1 </value>
</property>
<property name="b">
<value>2 </value>
</property>
</bean>
</beans>

a.xml
<beans>
<bean id="abstractbean" class="B" parent="abstractbean">
</beans>

b.xml

<beans>
<bean id="abstractbean" class="A" parent="abstractbean"/>
<property name="c">
<value>3 </value>
</property>
</bean>
</beans>
myairland 2009-09-03
  • 打赏
  • 举报
回复
如果不是parent的话,只能在子类将父类再注入一遍,其实parent也就是干了这个操作,等高手来给出不同的方案,持续关注中,而且如果父类的代码不可见的话,就好象只能这样注入,无法写annoation注入
hzl37du3 2009-09-03
  • 打赏
  • 举报
回复

<beans>
<bean id="spot.spotDao" class="com.danlong.spot.dao.impl.SpotDaoImpl" parent="daoTemplate"></bean>

<bean id="spot.spotManager" parent="txProxyTemplate">
<property name="proxyInterfaces">
<list>
<value>com.danlong.spot.service.SpotManager</value>
</list>
</property>
<property name="target">
<ref bean="spot.spotManagerImpl"/>
</property>
</bean>

<bean id="spot.spotManagerImpl"
class="com.danlong.spot.service.impl.SpotManangerImpl" parent="com.danlong.common.service.imp.BaseManager">
<property name="spotDao">
<ref bean="spot.spotDao"/>
</property>
</bean>
</beans>


如同上面的配置,SpotManangerImpl已经继承了BaseManager,如果不用parent的话,BaseManager属性的依赖注入就实现不了,报空指针。难道一定要用parent吗?

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧