互联网app下载手机优化加速有什么用
news/
2025/9/24 8:39:36/
文章来源:
互联网app下载,手机优化加速有什么用,seo网站设计,o2o网站建设方案pptdubbo自定义了很多xml标签#xff0c;例如#xff0c;那么这些自定义标签是怎么与spring结合起来的呢#xff1f;我们先看一个简单的例子。一 编写模型类1 packagecom.hulk.testdubbo.model;23 public classHero {4 privateString name;5 private intage;67 publicString ge…dubbo自定义了很多xml标签例如那么这些自定义标签是怎么与spring结合起来的呢我们先看一个简单的例子。一 编写模型类1 packagecom.hulk.testdubbo.model;23 public classHero {4 privateString name;5 private intage;67 publicString getName() {8 returnname;9 }1011 public voidsetName(String name) {12 this.name name;13 }1415 public intgetAge() {16 returnage;17 }1819 public void setAge(intage) {20 this.age age;21 }22 }二 定义xsd文件1 3 xmlns:xsdhttp://www.w3.org/2001/XMLSchema4 targetNamespacehttp://hulk.com/schema5 6 7 8 9 10 11 12 13 14 15 16 1718 19 20 21 22 23 说明定义targetNamespace(目标命名空间)xmlns的值要与这个相同xsd:element定义的就是将来会在xml文件中用到的元素例如中的applicationxsd:attribute定义的就是模型类中的属性例如中的name并且可以指定属性类型进而起到检测的作用(当我们定义的是int如果在xml中的值是非int型的直接会报错)。三 编写spring.schemas作用该文件用来指定xsd文件的位置。http\://hulk.com/schema/hero.xsdMETA-INF/hero.xsd注意红色部分要与xsd文件中的targetNamespace相同。四 编写BeanDefinition解析器作用主要用来解析自定义的xml标签。1 packagecom.hulk.testdubbo.schema;23 importorg.springframework.beans.factory.config.BeanDefinition;4 importorg.springframework.beans.factory.support.BeanDefinitionRegistry;5 importorg.springframework.beans.factory.support.RootBeanDefinition;6 importorg.springframework.beans.factory.xml.BeanDefinitionParser;7 importorg.springframework.beans.factory.xml.ParserContext;8 importorg.w3c.dom.Element;910 public class HeroBeanDefinitionParser implementsBeanDefinitionParser {11 private final ClassbeanClass;1213 public HeroBeanDefinitionParser(ClassbeanClass) {14 this.beanClass beanClass;15 }1617 publicBeanDefinition parse(Element element, ParserContext parserContext) {18 RootBeanDefinition beanDefinition newRootBeanDefinition();19 beanDefinition.setBeanClass(beanClass);20 beanDefinition.setLazyInit(false);21 beanDefinition.getPropertyValues().add(name, element.getAttribute(name));22 beanDefinition.getPropertyValues().add(age, element.getAttribute(age));23 BeanDefinitionRegistry beanDefinitionRegistry parserContext.getRegistry();24 beanDefinitionRegistry.registerBeanDefinition(beanClass.getName(),beanDefinition);//注册bean到BeanDefinitionRegistry中25 returnbeanDefinition;26 }27 }五 编写命名空间处理器作用主要用来注册BeanDefinition解析器。1 packagecom.hulk.testdubbo.schema;23 importcom.hulk.testdubbo.model.Hero;4 importorg.springframework.beans.factory.xml.NamespaceHandlerSupport;56 public class HeroNamespaceHandler extendsNamespaceHandlerSupport {7 public voidinit() {8 registerBeanDefinitionParser(elementname1, new HeroBeanDefinitionParser(Hero.class));9 }10 }说明通常为每一个xsd:element都要注册一个BeanDefinitionParser。六 编写spring.handlers文件作用主要用于关联命名空间处理器和xsd中的targetNamespace。http\://hulk.com/schemacom.hulk.testdubbo.schema.HeroNamespaceHandler说明key是xsd文件中的targetNamespace。七 测试 - 编写hero.xml1 ?xml version1.0 encodingUTF-8?2 3 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance4 xmlns:herohttp://hulk.com/schema5 xsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd6 http://hulk.com/schema http://hulk.com/schema/hero.xsd7 8 说明xmlns:hero的value是xsd文件中的targetNamespace。xmlns:hero可以写成xmlns:xxx此时就要写成八 测试 - 编写测试主类1 packagecom.hulk.testdubbo.test;23 importcom.hulk.testdubbo.model.Hero;4 importorg.springframework.context.ApplicationContext;5 importorg.springframework.context.support.ClassPathXmlApplicationContext;67 public classMain {8 public static voidmain(String[] args) {9 ApplicationContext applicationContext new ClassPathXmlApplicationContext(hero.xml);10 Hero hero (Hero) applicationContext.getBean(Hero.class.getName());11 System.out.println(name: hero.getName() age: hero.getAge());12 }13 }如何在spring中自定义xml标签的方法就结束了。在实际中随着注解和javaconfg的盛行xml的方式渐渐的会淡出舞台但是spring的启动流程还是会的。来看一下上述代码涉及到的流程。使用ResourceLoader将配置文件xml装载为Resource对象使用BeanDefinitionReader解析配置信息将每一个解析为一个BeanDefinition对象然后存储到BeanDefinitionRegistry中实际上是BeanDefinitionReader调用BeanDefinitionParser进行了解析操作解析完成后注册到BeanDefinitionRegistry(代码看上边的HeroBeanDefinitionParser)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915376.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!