AOP系列(二)——为符合条件的目标对象创建代理
2015-08-04 22:09
423 查看
接着上篇文章,我们将采用新的方式进行动态代理。
ObjectNameAutoProxyCreator创建代理
客户端
优点:在配置文件中只需要配置一次,而不用为每个目标对象都配置一次。
优点:客户端的代码不用更改,调用的还是接口,而不是代理类。
ObjectNameAutoProxyCreator创建代理
实现思路
根据配置文件中的配置,Spring容器会根据此配置,为符合条件的对象创建代理。具体代码
配置文件<?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/> </sectionGroup> </configSections> <spring> <context> <resource uri="config://spring/objects"/> </context> <objects xmlns="http://www.springframework.net"> <object id="beforeAdvice" type="AOPExample.LogBeforeAdvice,AOPExample"/> <!--在容器中配置,必须的,以便在容器中可以根据后缀名Service查找到这个对象--> <object id="userService" type="AOPExample.UserService,AOPExample"/> <!--通过ObjectNameAutoProxyCreator自动创建AOP代理--> <object id="IServiceProxy" type="Spring.Aop.Framework.AutoProxy.ObjectNameAutoProxyCreator, Spring.Aop"> <property name="ObjectNames"> <list> <!--只要是对象的后缀名为Service的,就会自动为它们创建代理--> <value>*Service</value> </list> </property> <property name="InterceptorNames"> <list> <value>beforeAdvice</value> </list> </property> </object> </objects> </spring> </configuration>
客户端
class Program { static void Main(string[] args) { User enUser = new User() { Name ="Danny", Age=15 }; IApplicationContext context = ContextRegistry.GetContext(); IUserService userService = (IUserService)context.GetObject("userService"); userService.GetUserInfo(enUser); } }
总结
优点:在这个例子中Spring容器会为以名称Service结尾的多个目标对象生成代理类。优点:在配置文件中只需要配置一次,而不用为每个目标对象都配置一次。
优点:客户端的代码不用更改,调用的还是接口,而不是代理类。
相关文章推荐
- Docker 容器日志的那些事儿
- win7+opencv2.4.9+visualstudio2013
- [Linux--Shell]使用命令行关机或重启
- Linux 进程管理命令
- 谈谈@@IDENTITY 和 SCOPE_IDENTITY()的区别
- docker exec 与容器日志
- nginx搭建流媒体服务器的方法详解
- hadoop2
- CentOS服务器初始化设置---安全设置
- Linux 下信号理解(一)
- CentOS服务器初始化设置---安全设置
- hadoop1
- 查看linux中某个端口(port)是否被占用(netstat,lsof)
- docker logs 实现剖析
- Linux下使用Google Authenticator配置SSH登录动态验证码
- Linux下使用Google Authenticator配置SSH登录动态验证码
- [转]通过Mesos、Docker和Go,使用300行代码创建一个分布式系统
- 利用Squid反向代理搭建CDN缓存服务器加快Web访问速度
- 利用Squid反向代理搭建CDN缓存服务器加快Web访问速度
- 使用Nginx反向代理和proxy_cache缓存搭建CDN服务器加快Web访问速度