xml里面是这样配置的
<bean name="accsubAction" class="com.shandy.scra.bas.web.AccsubAction" singleton="false">
<property name="baseService" ref="accsubService"/>
</bean>因为baseService是AccsubAction父类的一个属性。在用注解方式注入这个属性值时@Resource不知道应该写在哪里了。
现在我的做法如下:通过重载setBaseService这个方法来实现父类的属性注入。但是这种方法我觉得有点多余
希望可以得到更好的方法。谢谢public class AccsubAction extends BaseAction<InitialAccsub>{ ...... @Resource(name="accsubService")
public void setBaseService(BaseService baseService) {
super.setBaseService(baseService);
}
......
}
<bean name="accsubAction" class="com.shandy.scra.bas.web.AccsubAction" singleton="false">
<property name="baseService" ref="accsubService"/>
</bean>因为baseService是AccsubAction父类的一个属性。在用注解方式注入这个属性值时@Resource不知道应该写在哪里了。
现在我的做法如下:通过重载setBaseService这个方法来实现父类的属性注入。但是这种方法我觉得有点多余
希望可以得到更好的方法。谢谢public class AccsubAction extends BaseAction<InitialAccsub>{ ...... @Resource(name="accsubService")
public void setBaseService(BaseService baseService) {
super.setBaseService(baseService);
}
......
}
子类一也重写了方法:setBaseService(BaseService baseService)。
子类二也重写了方法:setBaseService(BaseService baseService)。
要注入BaseService ,而当BaseService 正好是一接口。而父类注入了BaseService 的一个实现类一。这时子类一正好用实现类一来满足要求。子类二 却要用BaseService 的一个实现类二来满足要求。这就表示子类一和子类二要重新用@Resource(name="accsubService")来代替父类的@Resource(name="accsubService")。那不就是直接在子类使用@Resource吗?
所以楼主说这种方法多余,我不这样觉的。
我认为
Spring应该出一个这样的注解写在类申明部分//
@SetProperty(@name="baseService", @ref="accsubService")
public class AccsubAction extends BaseAction<InitialAccsub>{
不知道Spring的有没有类似的注解
我也不想再写一次。但是没有办法需要用@Resource设置父类属性。你有好的办法?
呵呵,看来你天天在msdn上面。呵呵
用于类似HibernateDaoSupport这样的,子类不能重写父类私有属性的gettersetter;不使用注解方式需要在配置文件中配置一下信息
<bean id="commonDao" class="com.zxf.oa.dao.hibernate.HibernateCommonDao" scope="prototype" >
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
public class HibernateCommonDao extends HibernateDaoSupport
{
public Object get(Class entityClass, Integer id)
{
return super.getHibernateTemplate().get(entityClass, id);
}
//...................
}
----------------------------------------------------------------------------------
使用注解方式
<bean id="commonDao" class="com.zxf.oa.dao.hibernate.HibernateCommonDao" scope="prototype" />public class HibernateCommonDao extends HibernateDaoSupport
{@Resource
private SessionFactory sessionFactoryTemp;public void setSessionFactoryTemp(SessionFactory sessionFactoryTemp)
{
this.sessionFactoryTemp = sessionFactoryTemp;
}
@PostConstruct
public void sessionFactory()
{
super.setSessionFactory(sessionFactoryTemp);
}
public Object get(Class entityClass, Integer id)
{
return super.getHibernateTemplate().get(entityClass, id);
}
//...................
}