Thx for the hint. I was lazy and wanted to scrap the added indirection of a separare service layer for a small exploration app.
But the problem occurs in more places than only the transaction proxy hiding. In my latest project I use a couple of spring configured activemq/jms queues which of course all resolve to Queue.class. I use the ApplicationContext service for now, but it really seems odd to me, why there is no inbuilt facility by which I can reference a Spring bean by name. Spring itself utilizes the JSR compatible javax.annotation.Resource for this. Like in @Autowired @Resource(name = "mailQueue") private Queue mailQueue = null; @Autowired @Resource(name = "feedQueue") private Queue feedQueue = null; Maybe that could be a way for Tapestry 5.2 also? Regards, Otho 2009/5/31 Jonathan Barker <jonathan.theit...@gmail.com> > Otho, > > Just in case you are still looking for a solution... > > > Change how you declare your beans. For example: > > <bean id="txProxyTemplate" abstract="true" > > > class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> > <property name="transactionManager"> > <ref local="transactionManager" /> > </property> > <property name="transactionAttributes"> > <props> > <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> > <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop> > <prop key="make*">PROPAGATION_REQUIRED</prop> > <prop key="delete*">PROPAGATION_REQUIRED</prop> > <prop key="*">PROPAGATION_REQUIRED,readOnly</prop> > </props> > </property> > </bean> > <bean id="authorityDAO" parent="txProxyTemplate"> > <property name="target"> > <!-- This is how to hide the second implementer of the interface > from Tapestry --> > <bean > > class="ca.itstrategic.fmp.portal.persistence.hibernate.AuthorityDAOImpl"> > <property name="sessionFactory"> > <ref local="sessionFactory" /> > </property> > </bean> > </property> > </bean> > > > The key piece is how you specify the target of the > TransactionProxyFactoryBean. By using a <bean> declaration rather than a > reference to a bean, Tapestry only sees the outer proxy bean. > > > Jonathan > > > On Tue, Apr 7, 2009 at 1:58 PM, Otho <taa...@googlemail.com> wrote: > > > Since Spring beans are not exposed anymore as services I get exceptions > > like > > > > > > Error obtaining injected value for field org.example.user.Login.dao: > Spring > > context contains 2 beans assignable to type org.example.dao.Dao: dao, > > daoImpl. > > > > I couldn't find anything in the docs about injecting by name. And the > > proposes workaround for non singletons with injecting ApplicationContext > > and > > then get the bean by name/id works, but is a bit awkward in cases like > > this. > > > > Is there some other possibility? If not, is support for injection by name > > planned in the future without the 5.0 compatibility mode? > > > > > > -- > Jonathan Barker > ITStrategic >