<aop:config> <aop:aspect ref="audience"> <aop:before pointcut="execution(* com.springinaction.springidol.Performer.perform(..))" method="takeSeats"/> <aop:before pointcut="execution(* com.springinaction.springidol.Performer.perform(..))" method="turnOffCellPhones"/> <aop:after-returning pointcut="execution(* com.springinaction.springidol.Performer.perform(..))" method="applaud"/> <aop:after-throwing pointcut="execution(* com.springinaction.springidol.Performer.perform(..))" method="demandRefund"/> </aop:aspect> </aop:config> <aop:config> <aop:aspect ref="audience"> <aop:pointcut id="performance" expression="execution(* com.springinaction.springidol.Performer.perform(..))"/> <aop:before pointcut-ref="performance" method="takeSeats"/> <aop:before pointcut-ref="performance" method="turnOffCellPhones"/> <aop:after-returning pointcut-ref="performance" method="applaud"/> <aop:after-throwing pointcut-ref="performance" method="demandRefund"/> </aop:aspect> </aop:config> <bean id="audience" class="com.springinactin.springidol.Audience"/> public class Audience{ //공연 전 public void takeSeats(){ } //공연 전 public void turnOffCellPhones(){ } //공연 후 public void applaud(){ } //공연 실패 후 public void demandRefund(){ } } @Aspect public class Audience{ @Point("execution(* com.springinaction.springidol.Performer.perform(..))") public void performance(){} @Before("performance()") //공연 전 public void takeSeats(){ } @Before("performance()") //공연 전 public void turnOffCellPhones(){ } @AfterReturning("performance()") //공연 후 public void applaud(){ } @AfterThrowing("performance()") //공연 실패 후 public void demandRefund(){ } }