Mina 配置中的 CustomEditorConfigurer

Mina 配置中的 CustomEditorConfigurer

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

近期分析一个 Mina 的实际应用系统,发现在 Spring 依赖注入的配置文件中 CustomEditorConfigurer 的 bean 并未被任何地址使用进行装配,但把它去掉,就会报错,提示无法将字符串的地址转换成 InetSocketAddress 地址:

	<!--此部分被 NioSocketAcceptor 隐式使用,无此则会报字符串无法转换成 InetSocketAddress -->
	<bean id="customEditorConfigurer"
		class="org.springframework.beans.factory.config.CustomEditorConfigurer">
		<property name="customEditors">
			<map>
				<entry key="java.net.SocketAddress"
					value="org.apache.mina.integration.beans.InetSocketAddressEditor" />
			</map>
		</property>
	</bean>

可以想到,从字符串到 SocketAddress 的转换,会偿试使用该自定义属性编辑器。

----- 补充开始 ------

Spring 源码下载:https://github.com/spring-projects/spring-framework/tree/3.2.x

分析没有完成,大体了解到,Spring 配置文件中的一个 bean 并不全都会有目标装配位置,而是隐式地被 Spring 框架加载用于解析特定的内容。

比如这里:

	<bean id="ioAcceptor" class="org.apache.mina.transport.socket.nio.NioSocketAcceptor"
		init-method="bind" destroy-method="unbind">
		<property name="defaultLocalAddress" value=":12345" />
		<property name="handler" ref="serverHandler" />
		<property name="filterChainBuilder" ref="filterChainBuilder" />
		<property name="reuseAddress" value="true" />
	</bean>

其中,defaultLocalAddress 的值是字符串形式提供,但实际 Mina 框架中的使用是这样的:

  public void setDefaultLocalAddress(InetSocketAddress localAddress)
  {
    setDefaultLocalAddress(localAddress);
  }

故而,Spring 会自动从配置文件中查找并实例化自定义的属性编辑器注册给自已用,当需要将字符串赋给该类型的属性时,就会使用已注册的对应类型的属性编辑器来处理。
上面已经提到,如果你把对应的配置文件中的地址转换属性编辑器注释掉,Spring 在进行转换处理时,查不到该类型的属性编辑器,就会提示错误,无法转换,当然了,是依据

这里面的 key 所指定的类型来查找的。

当然了,属性的类型,应该是通过反射得知的。

----- 补充结束 ------

具体属性编辑器的用法,还需进一步研究,暂时只知道由它转换即可。

经查 Spring 官方文档,获得如下 CustomEditorConfigurer的类说明:

org.springframework.beans.factory.config

Class CustomEditorConfigurer

  • java.lang.Object
    • org.springframework.beans.factory.config.CustomEditorConfigurer

    时间: 2024-10-02 03:05:38

    Mina 配置中的 CustomEditorConfigurer的相关文章

    防火墙配置中必备的六个主要命令

    防火墙的基本功能,是通过六个命令来完成的.一般情况下,除非有特殊的安全需求,这个六个命令基本上可以搞定防火墙的配置.下面笔者就结合CISCO的防火墙,来谈谈防火墙的基本配置,希望能够给大家一点参考. 第一个命令:interface Interface是防火墙配置中最基本的命令之一,他主要的功能就是开启关闭接口.配置接口的速度.对接口进行命名等等.在买来防火墙的时候,防火墙的各个端都都是关闭的,所以,防火墙买来后,若不进行任何的配置,防止在企业的网络上,则防火墙根本无法工作,而且,还会导致企业网络

    nginx location在配置中的优先级

    location表达式类型 ~ 表示执行一个正则匹配,区分大小写 ~* 表示执行一个正则匹配,不区分大小写 ^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location. = 进行普通字符精确匹配.也就是完全匹配. @ "@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files location优先级说明 在nginx的location和配置中location的顺序没有太大关系.正location表达式的类型有关.

    struts2 xml配置中json格式数据

    问题描述 struts2 xml配置中json格式数据 clientList[d+].clientaway.w+ 什么意思 可以带clientaway这个实体类中的所有属性吗 解决方案 这是正则表达式d+匹配数字w+匹配文本 clientList[d+].clientaway.w+ 可以匹配 clientList[123].clientaway.abc 之类的字符串

    必须在配置中注册 WebResource.axd 处理程序错误的解决方法

    由于服务器升级,从Windows 2003 升级到Window 2008 Server, IIS 6也变成了IIS 7. 结果一旦进入到包含ScriptManager的页面,就报如下错误:  要处理此请求,必须在配置中注册 WebResource.axd 处理程序. <!-- Web.Config 配置文件 --> <configuration>   <system.web>       <httpHandlers>           <add pa

    回发或回调参数无效。在配置中使用 pages enableEventValidation=true 或在页面中使用 %@ Page EnableEventValidation=true % 启用了事件验证

    WebForm中回发或回调参数无效问题的解决 解决   .NET中回发或回调参数无效问题的解 该错误的详细提示信息为: 回发或回调参数无效.在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证.出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件. 目前为止遇到的出

    编码-关于spring xml配置中的c命名空间和p命名空间的问题

    问题描述 关于spring xml配置中的c命名空间和p命名空间的问题 <?xml version=""1.0"" encoding=""UTF-8""?> xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:c=""http://www.springframework.org/sch

    平台-小白在cocos2dx-3.x+win8环境配置中出现问题

    问题描述 小白在cocos2dx-3.x+win8环境配置中出现问题 因为是windows平台下开发,所以并没有配置ADT,NDK等,仅仅设置了python环境变量. 在运行Testcpp时,成功运行. 可是在运行Hellocpp时,出现错误. 错误提示:无法启动程序 D:cocosHelloWroldhellococosproj.win32Debug.win32HelloCpp.exe 系统找不到指定的文件 求帮助呀. 解决方案 HelloCpp编译成功了没 解决方案二: 编译也没有成功. 出

    spring-Spring配置中如何给Map注入List类型的值

    问题描述 Spring配置中如何给Map注入List类型的值 如题:有如下一个类,该如何在bean中为其注入值? package com.spring.di; import java.util.List; import java.util.Map; public class Company { public Map<Department, List<Employee>> map; public Map<Department, List<Employee>>

    要处理此请求,必须在配置中注册 WebResource.axd 处理程序。

    问题描述 "/"应用程序中的服务器错误.要处理此请求,必须在配置中注册WebResource.axd处理程序.<!--Web.Config配置文件--><configuration><system.web><httpHandlers><addpath="WebResource.axd"verb="GET"type="System.Web.Handlers.AssemblyResour