把DWR的配置写到Spring的配置文件里(Spring2 新特性-自定义schema初体验)
?
????</xsd:complexType>
</xsd:schema>
2、我们要做一个DWRNamespaceHandler来处理DWR的配置信息,其实里面就做一件事把AllowBeanDefinitionParser注册给allow节点。因为我们dwr的配置部分根节点就一个标签allow,所以我们就做一个用于解析allow标签的AllowBeanDefinitionParser解析器就行。如果我们的根节点还有其他的标签,同样也要做相应的解析器。
public class DWRNamespaceHandler extends NamespaceHandlerSupport{
?
????public void init() {
????????//把AllowBeanDefinitionParser注册到allow节点
????????registerBeanDefinitionParser("allow",new AllowBeanDefinitionParser());
????}
?
}
?
其实难点是做AllowBeanDefinitionParser,这里你需要一些DOM模型的知识,来操作配置节点的内容。然后根据内容进行处理。在这里我们,需要做三件事:
???[1] ?把配置节点的内容转换成对象模型,即AllowBean(其实就是一些POJO罢了)。
???[2] ?把这个AllowBean注册给Spring的Context,这一步是可选的。因为我们主要是把这个Bean给DWR,当然顺道给Spring一份也没什么问题。
???[3] 把这个AllowBean注册到AllowBeanHolder。
?
3、AllowBeanHolder。
???其实这就是个简单的singleton类,整个运行期只有一个实例。它就像一个容器,AllowBeanDefinitionParser往里放,DWR的Configuration再从这里取。
?
4、扩展DWR的DefaultConfiguration,我们做一个SpringConfiguration。DWR的DefaultConfiguration是负责读取配置信息的。我们在其中加入从AllowBeanHolder读取配置信息的功能即可。
?
5、扩展DWR的DWRServlet,我们做一个SpringDWRServlet,原来的DWRServlet加载的是DefaultConfiguration,我们的Serlvet加载我们自己的SpringConfiguration即可。
?
6、万事俱备,只欠东风啦。就是让Spring知道我们干了这些!
???在META-INF目录下(如果没有在src目录下创建一个)加入spring.handlers和spring.schemas两个文件。
???spring.handlers中的内容:
???http://www.devside.org/schema/spring/dwr=org.devside.core.support.dwr.DWRNamespaceHandler
???spring.schemas中的内容:
???http://www.devside.org/schema/spring/dwr.xsd=org/devside/core/support/dwr/dwr.xsd
???
???注意不要写错字哦,我一开始就写错一个字母,结果怎么调试都不能成功,还以为Spring2有问题呢。
?
ok了,下面我们就可以写一个spring的配置文件来试试喽。
?
?