<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd"><beanid="fooService"class="x.y.service.DefaultFooService"/><!-- the profiling advice --><beanid="profiler"class="x.y.SimpleProfiler"><!-- execute before the transactional advice (hence the lower order number) --><property name="order" value="1"/>
</bean><aop:config><aop:pointcutid="entryPointMethod"expression="execution(* x.y..Service.(..))"/>
<!-- will execute after the profiling advice (c.f. the order attribute) --><aop:advisoradvice-ref="txAdvice"pointcut-ref="entryPointMethod"order="2"/>
<!-- order value is higher than the profiling aspect --><aop:aspectid="profilingAspect"ref="profiler"><aop:pointcutid="serviceMethodWithReturnValue"expression="execution(!void x.y..Service.(..))"/>
<aop:aroundmethod="profile"pointcut-ref="serviceMethodWithReturnValue"/></aop:aspect></aop:config><tx:adviceid="txAdvice"transaction-manager="txManager"><tx:attributes><tx:methodname="get*"read-only="true"/><tx:methodname="*"/></tx:attributes></tx:advice><!-- other <bean/> definitions such as a DataSource and a PlatformTransactionManager here --></beans>