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











目录
相关文章
|
4月前
|
消息中间件 数据采集 编解码
apache mina
apache mina
45 0
|
前端开发 Java fastjson
Netty系列(一):Springboot整合Netty,自定义协议实现
Netty是由JBOSS提供的一个java开源框架,现为 [Github](https://github.com/netty/netty)上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
925 0
Netty系列(一):Springboot整合Netty,自定义协议实现
|
监控 Dubbo 网络协议
真的够可以的,基于Netty实现了RPC框架
RPC全称Remote Procedure Call,即远程过程调用,对于调用者无感知这是一个远程调用功能。目前流行的开源RPC 框架有阿里的Dubbo、Google 的 gRPC、Twitter 的Finagle 等。本次RPC框架的设计主要参考的是阿里的Dubbo,这里Netty 基本上是作为架构的技术底层而存在的,主要完成高性能的网络通信,从而实现高效的远程调用。
|
存储 Java
netty框架的学习笔记 + 一个netty实现websocket通信案例
一、前言 1.什么是netty? 2.netty的使用场景。 3.学习目录 二.java io通信 三.netty入门 四.websocket入门 五.netty实现websocket通信案例。 1.
285 0
|
Java Spring
BootNettyRpc:采用 Netty 实现的 RPC 框架
什么是 BootNettyRpc?BootNettyRpc 是一个采用Netty实现的Rpc框架,适用于Spring Boot项目,支持Spring Cloud。 目前支持的版本为Spring Boot 1.5.x,Spring Cloud版本为D和E版本。
1339 0
|
网络协议 编解码
|
Apache 编解码 网络协议