<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns:aop="http://www.springframework.org/schema/aop"
		xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
				http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

	<aop:config>
		<aop:aspect id="beforeAdviceBindingTests" ref="testAspect">
			<aop:before method="oneIntArg" pointcut="execution(* setAge(int)) and args(age)"/>
			<aop:before method="oneObjectArg" pointcut="execution(* getAge()) and this(bean)"/>
			<aop:before method="oneIntAndOneObject"
					pointcut="execution(* setAge(..)) and args(age) and target(bean)" arg-names="age,bean"/>
			<aop:before method="needsJoinPoint" pointcut="execution(* getAge())"/>
			<aop:before method="needsJoinPointStaticPart" pointcut="execution(* getAge())"/>
		</aop:aspect>

		<!-- variation with external pointcut reference -->
		<aop:aspect ref="authenticationLogger">
			<aop:pointcut id="authenticationMethodWithString"
					expression="execution(boolean *..SecurityManager.authenticate(..)) and args(username,java.lang.String)"/>
			<aop:before pointcut-ref="authenticationMethodWithString"
					method="logAuthenticationAttempt(java.lang.String)"/>
		</aop:aspect>
	</aop:config>

	<bean id="testAspect" class="org.springframework.aop.aspectj.AdviceBindingTestAspect"/>

	<bean id="testBean" class="org.springframework.beans.TestBean"/>

	<bean id="authenticationLogger" class="org.springframework.aop.aspectj.AuthenticationLogger"/>

</beans>
