java在抽象类中注入属性架构设计 20
我们都知道java在抽象类中是不能注入属性的,但是有时候在抽象类中需要调另一个实例bean,如果都在子类中注入,那么当有很多子类时改造会比较大,有什么好的办法就是不需要改...
我们都知道java在抽象类中是不能注入属性的,但是有时候在抽象类中需要调另一个实例bean,如果都在子类中注入,那么当有很多子类时改造会比较大,有什么好的办法就是不需要改动子类来实现?
我想到一种方法是在抽象类和子类之间加一层,用于属性注入,但是这样的话感觉就设计之初就不用搞出抽象类了,所以被我排除了,请教还有没有其他优美的方式? 展开
我想到一种方法是在抽象类和子类之间加一层,用于属性注入,但是这样的话感觉就设计之初就不用搞出抽象类了,所以被我排除了,请教还有没有其他优美的方式? 展开
3个回答
展开全部
题主是在用spring做注入?
抽象类是可以用spring注入属性的。我的代码中有个这样的例子:
<bean id="BaseEventAction" class="com.sinosig.evaluation.fcff.web.event.BasicEventAction"
abstract="true" parent="BaseAction">
<property name="rowFactory" ref="FcffCacheAdapter" />
<property name="caculate" ref="CaculateService" />
<property name="diffusion" ref="DeffusionService" />
</bean>
<bean id="MethodChangedAction"
class="com.sinosig.evaluation.fcff.web.event.MethodChagedAction"
scope="prototype" parent="BaseEventAction" />
public abstract class BasicEventAction extends BaseAction implements
EventAction {
……
}
public class MethodChagedAction extends BasicEventAction {
……
}
spring框架中的 abstract="true" 是告诉spring框架不要去实例化这个类而已。但是在spring的配置中,仍然会有相关的注入属性的配置。子类的配置会继承父类的配置,然后spring框架再根据子类的最终配置去实例化和注入。
抽象类是可以用spring注入属性的。我的代码中有个这样的例子:
<bean id="BaseEventAction" class="com.sinosig.evaluation.fcff.web.event.BasicEventAction"
abstract="true" parent="BaseAction">
<property name="rowFactory" ref="FcffCacheAdapter" />
<property name="caculate" ref="CaculateService" />
<property name="diffusion" ref="DeffusionService" />
</bean>
<bean id="MethodChangedAction"
class="com.sinosig.evaluation.fcff.web.event.MethodChagedAction"
scope="prototype" parent="BaseEventAction" />
public abstract class BasicEventAction extends BaseAction implements
EventAction {
……
}
public class MethodChagedAction extends BasicEventAction {
……
}
spring框架中的 abstract="true" 是告诉spring框架不要去实例化这个类而已。但是在spring的配置中,仍然会有相关的注入属性的配置。子类的配置会继承父类的配置,然后spring框架再根据子类的最终配置去实例化和注入。
展开全部
首先纠正你一个错误。
抽象内是可以有它自己的属性的。
所以你完全可以将一些共通的属性写在抽象内里面。
抽象内是可以有它自己的属性的。
所以你完全可以将一些共通的属性写在抽象内里面。
更多追问追答
追问
这个学过java的人都知道。答非所问。
追答
那 麻烦 把问题 说的清楚些
在spring 中:
Spring中注入抽象bean
一般情况下是很简单的,是在标签中写入abstract=true就可以的
有可能会出现这样的情况:
定义个抽象类 A
我们在A里面注入了两个属性 B和C
其中B和C也在标签定义
此时我们需要有一个具体的实现类AA继承自A抽象类
同时我们在AA中新添加了一个属性D,同时这个D也需要Sping注入进来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以考虑提出来放到工具类中,不一定要放到抽象层。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询