Audience.java:
package
com.lnn.advice.auto;
import
org.aspectj.lang.ProceedingJoinPoint;
import
org.aspectj.lang.annotation.AfterReturning;
import
org.aspectj.lang.annotation.AfterThrowing;
import
org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import
org.aspectj.lang.annotation.Before;
@Aspect
public class Audience {
@Before("execution(*
*.perform(..))")
public void takeSeats() {
System.out.println("The
audience is taking their seats.");
}
@Before("execution(*
*.perform(..))")
public void
turnOffCellPhones() {
System.out.println("The
audience is turning off their cellphones");
}
@AfterReturning("execution(*
*.perform(..))")
public void applaud() {
System.out.println("CLAP
CLAP CLAP CLAP CLAP");
}
@AfterThrowing("execution(*
*.perform(..))")
public void demandRefund()
{
System.out.println("Boo! We
want our money back!");
}
@Around("execution(*
*.perform(..))")
public void
watchPerformance(ProceedingJoinPoint joinpoint) {
try {
System.out.println("Before
Method");
joinpoint.proceed();
System.out.println("After
Return");
}
catch (Throwable e) {
System.out.println("After
Throwing.");
}
}
}
Instrument.java:
package com.lnn.advice;
public interface Instrument {
public void play();
}
Violin.java:
package com.lnn.advice;
public class Violin implements Instrument {
@Override
public void play() {
System.out.println("violin
is playing now...");
}
}
PerformanceException:
package com.lnn.advice;
public class
PerformanceException extends Exception {
private static final long serialVersionUID =
-6772609716850440380L;
}
Performer.java:
package com.lnn.advice;
public interface Performer {
public void perform() throws
PerformanceException;
}
Instrumentalist.java:
package com.lnn.advice;
import com.lnn.advice.Instrument;
import
com.lnn.advice.PerformanceException;
import
com.lnn.advice.Performer;
public class Instrumentalist
implements Performer {
public
Instrumentalist() {
}
public void perform() throws
PerformanceException {
System.out.print("Playing
" + song + " : ");
if (instrument != null) {
instrument.play();
}
else {
throw new
PerformanceException();
}
}
private String song;
public void setSong(String
song) {
this.song = song;
}
private Instrument instrument;
public void
setInstrument(Instrument instrument) {
this.instrument = instrument;
}
}
auto.xml:
<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-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<bean id="violin"
class="com.lnn.advice.Violin" />
<bean id="instrumentalist"
class="com.lnn.advice.Instrumentalist">
<property name="song"
value="It's My Life" />
<property name="instrument"
ref="violin" />
</bean>
<bean id="audience"
class="com.lnn.advice.auto.Audience" />
<aop:aspectj-autoproxy/>
</beans>
Test.java:
package
com.lnn.advice.auto;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
import
com.lnn.advice.PerformanceException;
import
com.lnn.advice.Performer;
public class Test {
public static void main(String[]
args) throws PerformanceException {
ApplicationContext
context = new ClassPathXmlApplicationContext("aop/auto.xml");
Performer
performer = (Performer) context.getBean("instrumentalist");
performer.perform();
}
}
No comments:
Post a Comment