I am using some of the example config from the petclinic sample app. In particular I am having problems with my views resolving when I have the following bean definition:

Code:
<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
			abstract="true">
		<property name="transactionManager"><ref bean="transactionManager"/></property>
		<property name="transactionAttributes">
			<props>
				<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="store*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	</bean>
As the example shows, I am using this as the parent bean for my Transaction definitions for target business objects.

My problem is I get the following error when VelocityView tries to resolve my view:

Code:
org.springframework.beans.factory.BeanIsAbstractException&#58; Tried to instantiate abstract bean definition '&baseTransactionProxy'
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean&#40;AbstractBeanFactory.java&#58;177&#41;
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean&#40;AbstractBeanFactory.java&#58;136&#41;
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType&#40;DefaultListableBeanFactory.java&#58;177&#41;
	at org.springframework.context.support.AbstractApplicationContext.getBeansOfType&#40;AbstractApplicationContext.java&#58;473&#41;
	at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors&#40;BeanFactoryUtils.java&#58;108&#41;
	at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors&#40;BeanFactoryUtils.java&#58;112&#41;
	at org.springframework.beans.factory.BeanFactoryUtils.beanOfTypeIncludingAncestors&#40;BeanFactoryUtils.java&#58;141&#41;
	at org.springframework.web.servlet.view.velocity.VelocityView.initApplicationContext&#40;VelocityView.java&#58;182&#41;
	at org.springframework.context.support.ApplicationObjectSupport.setApplicationContext&#40;ApplicationObjectSupport.java&#58;79&#41;
	at org.springframework.web.servlet.view.AbstractCachingViewResolver.loadAndConfigureView&#40;AbstractCachingViewResolver.java&#58;123&#41;
	at org.springframework.web.servlet.view.AbstractCachingViewResolver.resolveViewName&#40;AbstractCachingViewResolver.java&#58;78&#41;
	at org.springframework.web.servlet.DispatcherServlet.render&#40;DispatcherServlet.java&#58;629&#41;
	at org.springframework.web.servlet.DispatcherServlet.doService&#40;DispatcherServlet.java&#58;535&#41;
	at org.springframework.web.servlet.FrameworkServlet.service&#40;FrameworkServlet.java&#58;321&#41;
	at javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;802&#41;
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter&#40;ApplicationFilterChain.java&#58;237&#41;
	at org.apache.catalina.core.ApplicationFilterChain.doFilter&#40;ApplicationFilterChain.java&#58;157&#41;
	at org.apache.catalina.core.StandardWrapperValve.invoke&#40;StandardWrapperValve.java&#58;214&#41;
	at org.apache.catalina.core.StandardValveContext.invokeNext&#40;StandardValveContext.java&#58;104&#41;
	at org.apache.catalina.core.StandardPipeline.invoke&#40;StandardPipeline.java&#58;520&#41;
	at org.apache.catalina.core.StandardContextValve.invokeInternal&#40;StandardContextValve.java&#58;198&#41;
	at org.apache.catalina.core.StandardContextValve.invoke&#40;StandardContextValve.java&#58;152&#41;
	at org.apache.catalina.core.StandardValveContext.invokeNext&#40;StandardValveContext.java&#58;104&#41;
	at org.apache.catalina.core.StandardPipeline.invoke&#40;StandardPipeline.java&#58;520&#41;
	at org.apache.catalina.core.StandardHostValve.invoke&#40;StandardHostValve.java&#58;137&#41;
	at org.apache.catalina.core.StandardValveContext.invokeNext&#40;StandardValveContext.java&#58;104&#41;
	at org.apache.catalina.valves.ErrorReportValve.invoke&#40;ErrorReportValve.java&#58;117&#41;
	at org.apache.catalina.core.StandardValveContext.invokeNext&#40;StandardValveContext.java&#58;102&#41;
	at org.apache.catalina.core.StandardPipeline.invoke&#40;StandardPipeline.java&#58;520&#41;
	at org.apache.catalina.core.StandardEngineValve.invoke&#40;StandardEngineValve.java&#58;109&#41;
	at org.apache.catalina.core.StandardValveContext.invokeNext&#40;StandardValveContext.java&#58;104&#41;
	at org.apache.catalina.core.StandardPipeline.invoke&#40;StandardPipeline.java&#58;520&#41;
	at org.apache.catalina.core.ContainerBase.invoke&#40;ContainerBase.java&#58;929&#41;
	at org.apache.coyote.tomcat5.CoyoteAdapter.service&#40;CoyoteAdapter.java&#58;160&#41;
	at org.apache.coyote.http11.Http11Processor.process&#40;Http11Processor.java&#58;799&#41;
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection&#40;Http11Protocol.java&#58;705&#41;
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt&#40;PoolTcpEndpoint.java&#58;577&#41;
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run&#40;ThreadPool.java&#58;683&#41;
	at java.lang.Thread.run&#40;Thread.java&#58;595&#41;
I think this has to do with org.springframework.transaction.interceptor.Transa ctionProxyFactoryBean being a FactoryBean and getBeansOfType tries to actually get the Factory. I thought that getBeansOfType would always skip Abstract beans reguardless?

Why this doesn't fail for the sample app, I have no idea unless the view resolver it's using is implemented differently. I haven't had a lot of time to look at the implementation there.

This is with Spring 1.1 Final running on Tomcat. Any ideas?

Thanks,
Patrick