Mega Code Archive

 
Categories / Java / Spring
 

Proxy Factory Bean Example

/* Pro Spring By Rob Harrop Jan Machacek ISBN: 1-59059-461-4 Publisher: Apress */ /////////////////////////////////////////////////////////////////////////////////////// //File:pfb.xml <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans>     <bean id="myBean1" class="MyBean">         <property name="dep">             <ref local="myDependency1"/>         </property>     </bean>          <bean id="myBean2" class="MyBean">         <property name="dep">             <ref local="myDependency2"/>         </property>     </bean>          <bean id="myDependencyTarget" class="MyDependency"/>          <bean id="myDependency1" class="org.springframework.aop.framework.ProxyFactoryBean">         <property name="target">             <ref local="myDependencyTarget"/>         </property>         <property name="interceptorNames">             <list>                 <value>advice</value>             </list>         </property>     </bean>          <bean id="myDependency2" class="org.springframework.aop.framework.ProxyFactoryBean">         <property name="target">             <ref local="myDependencyTarget"/>         </property>         <property name="interceptorNames">             <list>                 <value>advisor</value>             </list>         </property>     </bean>          <bean id="advice" class="MyAdvice"/>          <bean id="advisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">         <property name="advice">             <ref local="advice"/>         </property>         <property name="pointcut">             <bean class="org.springframework.aop.support.JdkRegexpMethodPointcut">                 <property name="pattern">                     <value>.*foo.*</value>                 </property>             </bean>         </property>     </bean> </beans> /////////////////////////////////////////////////////////////////////////////////////// import java.lang.reflect.Method; import org.springframework.aop.MethodBeforeAdvice; public class MyAdvice implements MethodBeforeAdvice {     public void before(Method method, Object[] args, Object target)             throws Throwable {         System.out.println("Executing: " + method);     } } /////////////////////////////////////////////////////////////////////////////////////// public class MyBean {     private MyDependency dep;          public void execute() {         dep.foo();         dep.bar();     }          public void setDep(MyDependency dep) {         this.dep = dep;     } } /////////////////////////////////////////////////////////////////////////////////////// public class MyDependency {     public void foo() {         System.out.println("foo()");     }          public void bar() {         System.out.println("bar()");     } } /////////////////////////////////////////////////////////////////////////////////////// import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class ProxyFactoryBeanExample {     public static void main(String[] args) {         ApplicationContext ctx = new FileSystemXmlApplicationContext(                 "build/pfb.xml");                  MyBean bean1 = (MyBean)ctx.getBean("myBean1");         MyBean bean2 = (MyBean)ctx.getBean("myBean2");                  System.out.println("Bean 1");         bean1.execute();                  System.out.println("\nBean 2");         bean2.execute();     } }                     ProxyFactoryBeanExample.zip( 1,481 k)