Colin,
Thanks for the explanation about the previous and current behavior. As I mentioned in my post, I'm not arguing that throwing an IllegalAgrumentException is bad under this circumstance however given that an older version of Spring had a certain default behavior when the 'abstract="true" was not provided, upgrading did result in backward incompatibility. And I think there's a subtle difference between this being a backward incompatible change versus a bad user configuration. (Correct me if I'm wrong, but if memory serves me right, I think the original example of txProxyTemplate on your blog did not have the abstract attribute.)
I'm still in development phase so it did not matter much to me but consider an application that was live with a txProxyTemplate defn. without abstract="true". Upgrading would break the app.
For reference, my original bean definition used to look like the following
Code:
<bean id="txProxyTemplate" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
Regards,
Sanjiv