有很多方法能更简单地建立代理,如果你不需要AOP框架的全部功能(例如不用XML而用Java 5.0的注释来驱动事务性代理,或者用一段简单的XML实现对一个Spring工厂里的许多bean应用一致的代理策略)。
还可以不用BeanFactory而用编程方法来构建AOP代理,虽然这种方法很少用:
TestBean target = new TestBean(); DebugInterceptor di = new DebugInterceptor(); MyInterceptor mi = new MyInterceptor(); ProxyFactory factory = new ProxyFactory(target); factory.addInterceptor(0, di); factory.addInterceptor(1, mi); // 一个用来封装目标的“调用拦截器”被自动添加 ITestBean tb = (ITestBean) factory.getProxy();
我们相信最好把应用程序的装配从Java代码里拿出来,AOP也不例外。
使用AOP作为EJB(版本2或以上版本)的替代物来进行企业服务是的重要性正在加大。Spring很成功地展现了这个主张的价值。
MVC web框架
Spring包括一个强大且高度可配置的MVC web框架。
Spring的MVC模型尽管不是源自Struts,但和Struts的很相似。一个Spring的Controller和Struts 的Action很像,它们都是多线程服务对象,只有一个实例代表所有客户端执行。但是,我们相信Spring MVC比起Struts有一些显著的优点。例如:
- Spring在控制器、JavaBean模型和视图间提供清晰的划分。
- Spring的MVC非常灵活。不像Struts那样强迫你的Action和Form对象有具体的继承(你只能用Java 的继承),Spring的MVC完全基于接口。此外,几乎Spring MVC框架的每个部分都能通过插入你自己的接口来配置。当然,我们也提供了简单的类作为一个可选的实现。
- Spring,像WebWork一样,提供拦截器和控制器,这使得提取处理多个请求的公共行为变得容易了。
- Spring MVC是真正视图无关的。如果你不愿意你不会被强制使用JSP;你能用Velocity、XLST或其他视图技术。如果你想用自定义的视图机制(比如你自己的模板语言),你可以轻松实现Spring的View接口来整合它。
- Spring的Controller 和其他对象一样是通过IoC来配置的。这让它们易于测试,和其他Spring管理的对象漂亮地集成在一起。
- 因为没有强迫使用具体的继承和显式地依赖于调度器Servlet的控制器,Spring MVC的web 层比起Struts 的web 层更易于测试。
- Web 层变成了业务对象层上的薄薄一层。这鼓励了好的习惯。Struts和其他专门的web框架让你自己实现你的业务对象;Spring为你的应用程序提供了一个完整的框架。
和Struts 1.1 及更高版本一样,你能根据你的需要在Spring MVC应用程序中拥有多个调度器Servlet。
下面的范例演示了一个简单的Spring Controller 如何访问同一个应用程序上下文中定一个业务对象。这个控制器在它的handleRequest()方法中执行了一个Google查询:
文章来源于领测软件测试网 https://www.ltesting.net/