Fork me on GitHub

动态代理模式

 9 @RunWith(SpringJUnit4ClassRunner.class)
10 @ContextConfiguration
11 public class ProxyTest {
12     @Autowired
13     private InvocationProxy invocationProxy;
14     
15     @Test
16     public void testName() throws Exception {
17         //EmployeeServiceImpl@2ecdca66
18         System.out.println(invocationProxy.getProxyObject());
19         
20         //class com.sun.proxy.$Proxy11
21         System.out.println(invocationProxy.getProxyObject().getClass());
22         IEmployeeService service = (IEmployeeService)invocationProxy.getProxyObject();
23         service.save();
24         service.update();
25     }
26 }

在上面,使用动态代理模式时,通过getProxyObject()方法获得的对象,通过System.out.println(invocationProxy.getProxyObject());进行打印时,显示EmployeeServiceImpl@2ecdca66类型,而实际上通过System.out.println(invocationProxy.getProxyObject().getClass());进行打印后,其实际类型为class com.sun.proxy.$Proxy11,,因此其实际上返回的是一个代理对象,,他实现了IEmployeeService接口,因此在下面可以使用IEmployeeService接口进行接受,并进行方法调用.


posted @ 2016-06-27 16:30  gouermazi  阅读(145)  评论(0编辑  收藏  举报