编写这两个文件
META-INF/spring.handlers
META-INF/spring.schemas
写法可以参照spring 那包下那两个文件,
Handler 继承 org.springframework.beans.factory.xml.NamespaceHandlerSupport
覆盖父类的 init(),
方法里调用
void org.springframework.beans.factory.xml.NamespaceHandlerSupport.registerBeanDefinitionParser(String elementName, BeanDefinitionParser parser)
----------------------------------------------------------------------------------
下面是 Spring 加载原理
可以看到那两个文件都是 properties 格式的。
spring Application context 启动时执行:
void org.springframework.context.support.AbstractApplicationContext.refresh()
直到调用
String org.springframework.beans.factory.xml.PluggableSchemaResolver.getSchemaMapping(String systemId)
通过
Enumeration<URL> = ClassLoader.getResources(String name)
获取对应文件的 URL ,然后就可以获取 Input 流,读取这两个 properties 文件。
分享到:
相关推荐
下面将详细解释如何进行Spring自定义XSD。 首先,你需要创建一个XML Schema文件,比如`myCustomSchema.xsd`。在这个文件中,你可以定义新的元素、属性,甚至引用Spring的标准元素。例如,你可以定义一个`myBean`...
- **Namespace Handler**:允许自定义命名空间,扩展XML配置,如数据源、任务调度等。 - **Profile**:支持环境相关的配置,可以根据不同的运行环境加载不同的配置。 - **Lazy Initialization**:通过lazy-init属性...
自定义Schema解析是Spring框架提供的一个强大特性,它允许开发者创建自己的XML命名空间,从而定义自己的配置元素和属性。这在大型项目中特别有用,因为可以创建特定于项目的配置约定,提高代码的可读性和可维护性。 ...
1. **检查XML文件的命名空间引用**:确保XML文件中引用了正确的Spring XSD版本,例如: ```xml xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...
至此,我们就完成了Spring自定义标签的全部流程。在实际应用中,可以根据项目需求定义各种自定义标签,简化配置,提高开发效率。同时,自定义标签也可以更好地封装复杂逻辑,使XML配置更加清晰易懂。
例如,假设我们有一个名为`myapp`的自定义命名空间,对应的解析器和处理器类在`com.example.schema`包下,那么在Spring配置文件中可能会这样写: ```xml <beans xmlns="http://www.springframework.org/schema/...
本篇文章将深入探讨Spring自定义标签的定义、解析以及相关源码分析。 首先,自定义标签的定义通常涉及到两个主要步骤: 1. **定义XSD文件**: XSD(XML Schema Definition)文件用于描述XML文档的结构和数据类型...
在实际应用中,`@Endpoint`注解可能会包含一些属性,比如服务的命名空间、端点地址等。在`BeanDefinitionParser`中,我们需要读取这些属性,并将它们设置到生成的`BeanDefinition`中。这样,当Spring初始化bean时,...
我们推荐你尝试一下 SpringSource 工具套件,因为它具有处理 Spring 组合命名空间的特殊功能。 要开始在你的应用环境里使用 security 命名空间,你所需要的就是把架构声明添加到你的应用环境文件里: ...
这段XML声明了使用Spring beans的命名空间,并指定了对应的`.xsd`文件位置。 SpringMVC的配置也是类似,如: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
接下来,我们需要在Spring的`schemaLocation`中声明这个自定义标签的命名空间和解析器。在XML配置文件的头部添加以下内容: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
配置文件采用XML格式编写,使用了Spring提供的多个命名空间来组织不同的配置信息。下面逐一解读这些命名空间及其功能: 1. **`xmlns="http://www.springframework.org/schema/beans"`**: - **作用**:定义Spring ...
这些标签并不属于标准的XML或Spring的命名空间,因此,XML解析器在没有相应的XSD文件定义时,会识别不了这些自定义标签,导致编译或运行时错误。 "Dubbo.xsd"文件正是解决这个问题的关键。这个文件包含了所有Dubbo...
这些引入声明了我们将会使用的标签库及其命名空间。 在实际应用中,我们可以通过`<bean>`标签来定义bean,并通过`ref`属性来进行bean间的依赖注入,例如: ```xml ``` 这里,`service` bean的`repository`属性...
xsi:schemaLocation是指本文档里的XML元素所遵守的规范,两部分组成,前面部分就是命名空间的名字,后面是xsd(xml schema)的地址。例如,在Spring框架的配置文件中,使用xsi:schemaLocation=...
- 在`beans.xml`文件中,需要声明Spring的XML命名空间以及对应的XSD约束文件。这样做的目的是为了能够正确解析Spring特有的标签和属性,并且在IDE中提供代码补全等功能。示例如下: ```xml ...
在XML配置文件中,我们需要添加Spring Task的命名空间声明,这样可以使用其提供的元素。这通常包括: ```xml xmlns:task="http://www.springframework.org/schema/task" ...
我们需要引入AOP命名空间,并声明一个`<aop:config>`元素来启用AOP功能: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:...
- **类与方法命名**: 类名和方法名应该具有良好的可读性和语义性,以便于后续理解和维护。 - **方法签名**: 方法应该遵循特定的格式,通常返回类型为`String`、`Integer`等基本类型或包装类,参数列表则根据具体需求...
为了简化配置过程,Spring Security 提供了一个特定的命名空间,可以使用该命名空间在 `web.xml` 或者 `applicationContext.xml` 中定义安全相关的配置。 ```xml <beans xmlns="http://www.springframework.org/...