在我的项目中,我使用了struts2和spring。 Spring仅用于DI。我正在通过会话创建我的所有动作,并通过spring DI创建模型bean。现在我想为我的类使用继承,它将通过基于aop的代理生成,它将是每个会话。编码如下。
<bean id="common.EshopDefaultAction" class="com.common.actions.EshopDefaultAction" scope="session" >
<property name="site" ref="master.site" />
<property name="menu" ref="master.menu" />
<property name="indexDAO" ref="common.indexDAO" />
<property name="categoryDAO" ref="master.categoryDAO" />
<property name="productDAO" ref="master.productDAO" />
</bean>
<bean id="common.IndexAction" parent="common.EshopDefaultAction" class="com.common.actions.IndexAction" scope="session">
<property name="indexInfo" ref="common.indexInfo" />
<aop:scoped-proxy />
</bean>
这两个动作都有成对的setter和getter。
我想拥有网站,菜单,indexDAO,categoryDAO,productDAO对象,这些对象由上面显示的所有子进程创建,如IndexAction。现在它为EshopDefaultAction
和IndexAction
创建了不同的对象。
将<aop:scoped-proxy />
添加到EshopDefaultAction
bean定义会产生类似
Invalid property 'targetBeanName' of bean class [com.common.actions.IndexAction]:
Bean property 'targetBeanName' is not writable or has an invalid setter method.
Does the parameter type of the setter match the return type of the getter?