Mina 配置中的 CustomEditorConfigurer

简介: Mina 配置中的 CustomEditorConfigurer太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)本文遵循“署名-非商业用途-保持一致”创作公用协议转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

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











目录
相关文章
|
9月前
|
Java
Netty自定义协议
先写一个Messsage类,解码的时候将要把ByteBuf解码为Message
58 0
|
存储 Java
netty框架的学习笔记 + 一个netty实现websocket通信案例
一、前言 1.什么是netty? 2.netty的使用场景。 3.学习目录 二.java io通信 三.netty入门 四.websocket入门 五.netty实现websocket通信案例。 1.
226 0
|
前端开发 Java fastjson
Netty系列(一):Springboot整合Netty,自定义协议实现
Netty是由JBOSS提供的一个java开源框架,现为 [Github](https://github.com/netty/netty)上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
381 0
Netty系列(一):Springboot整合Netty,自定义协议实现
【JAVA】如何基于Netty实现简单的RPC 框架
【JAVA】如何基于Netty实现简单的RPC 框架
168 0
【JAVA】如何基于Netty实现简单的RPC 框架
|
编解码 测试技术 数据处理
【Netty】codec框架
前面已经学习完了Netty框架中的主要组件,接着学习codec框架。
86 0
【Netty】codec框架
|
网络协议 编解码
|
Apache 编解码 网络协议