Audience.java:
package com.lnn.advice;
public class Audience {
public Audience() {
}
public void takeSeats() {
System.out.println("The
audience is taking their seats.");
}
public void
turnOffCellPhones() {
System.out.println("The
audience is turning off their cellphones");
}
public void applaud() {
System.out.println("CLAP
CLAP CLAP CLAP CLAP");
}
public void demandRefund()
{
System.out.println("Boo! We
want our money back!");
}
}
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;
}
}
pojo.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="instrumentalist"
class="com.lnn.advice.Instrumentalist">
<property name="song"
value="It's My Life" />
<property name="instrument"
ref="violin" />
</bean>
<bean id="violin"
class="com.lnn.advice.Violin" />
<bean id="audience"
class="com.lnn.advice.Audience" />
<aop:config>
<aop:aspect ref="audience">
<aop:before method="takeSeats"
pointcut="execution(* *.perform(..))" />
<aop:before method="turnOffCellPhones"
pointcut="execution(* *.perform(..))" />
<aop:after-returning method="applaud"
pointcut="execution(* *.perform(..))" />
<aop:after-throwing method="demandRefund"
pointcut="execution(* *.perform(..))" />
</aop:aspect>
</aop:config>
</beans>
Test.java:
package
com.lnn.advice.pojo;
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/pojo.xml");
Performer
performer = (Performer) context.getBean("instrumentalist");
performer.perform();
}
}
No comments:
Post a Comment