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);
}
         ......
}

解决方案 »

  1.   

    呵~ 楼主想法不错哦。不过应该实现不了。 spring 注解没有这么强大,而且认真想想应该也不好实现。例如:父类的方法setBaseService(BaseService baseService) 。
    子类一也重写了方法:setBaseService(BaseService baseService)。
    子类二也重写了方法:setBaseService(BaseService baseService)。
    要注入BaseService ,而当BaseService 正好是一接口。而父类注入了BaseService 的一个实现类一。这时子类一正好用实现类一来满足要求。子类二 却要用BaseService 的一个实现类二来满足要求。这就表示子类一和子类二要重新用@Resource(name="accsubService")来代替父类的@Resource(name="accsubService")。那不就是直接在子类使用@Resource吗?  
    所以楼主说这种方法多余,我不这样觉的。
      

  2.   


    我认为
    Spring应该出一个这样的注解写在类申明部分//
    @SetProperty(@name="baseService", @ref="accsubService")
    public class AccsubAction extends BaseAction<InitialAccsub>{
    不知道Spring的有没有类似的注解
      

  3.   


    我也不想再写一次。但是没有办法需要用@Resource设置父类属性。你有好的办法?
      

  4.   

    default-autowire="byName"设置这个可以自动按照名称来注入
      

  5.   


    呵呵,看来你天天在msdn上面。呵呵
      

  6.   

    楼主应该都学习JAVA 反射和动态代理。  
      

  7.   

    spring版本2.5.6
    用于类似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);
    }
    //...................
    }