• Mina框架与Spring整合配置文件


    Mina框架与Spring的整合事实上非常easy,主要是要弄清楚要注入的属性的名称,进而选择合适的注入方法。

    关于Spring的四种注入方法请还有一篇文章:spring依赖注入的四种方式

    <?xml version="1.0" encoding="UTF-8"?>

    <beans  
        xmlns="http://www.springframework.org/schema/beans"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xmlns:context="http://www.springframework.org/schema/context"  
        xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans.xsd  
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context.xsd">  
    <!-- 业务处理逻辑 -->
        <bean id="handler" class="com.mina.handler.StrategyFactoryHandler" />
         
    <!-- 累加数据包解码器:解断丢包、粘包问题 -->
    <bean id="codec" class="org.apache.mina.filter.codec.ProtocolCodecFilter">
    <constructor-arg>
    <bean class="com.mina.codec.MyCodecFcatory">
    <constructor-arg index="0">
    <bean class="com.mina.codec.MyEncoder"></bean>
    </constructor-arg>
    <constructor-arg index="1">
    <bean class="com.mina.codec.MyDecoder">
    </bean>
    </constructor-arg>

    </bean>
    </constructor-arg>
    </bean>

        <!-- 多线程处理过滤器,为后面的操作开启多线程,一般放在编解码过滤器之后,開始业务逻辑处理 -->
        <bean id="executors" class="org.apache.mina.filter.executor.ExecutorFilter"/>
        <!-- Mina自带日志过滤器 默认级别为debug -->
        <bean id="loggerFilter" class="org.apache.mina.filter.logging.LoggingFilter">
        <property name="messageReceivedLogLevel" ref="info"></property>
        <property name="exceptionCaughtLogLevel" ref="info"></property>
        </bean>
        <!-- 枚举类型 依赖注入  须要先通过此类进行类型转换-->
        <bean id="info" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">    
            <property name="staticField" value="org.apache.mina.filter.logging.LogLevel.INFO" />    
        </bean>
        <bean id="filterChainBuilder" class="org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder">  
     <property name="filters">  
       <map>
         <entry key="codec" value-ref="codec"/>
         <entry key="logger" value-ref="loggerFilter"/>
         <entry key="executors" value-ref="executors"/>
       </map>  
     </property>  
    </bean>
    <!-- 监听port -->
    <bean id="defaultLocalAddress" class="java.net.InetSocketAddress">
    <constructor-arg index="0" value="${tcpPort}"></constructor-arg>
    </bean>
    <!-- session config 通过工厂方法注入 -->
        <bean id="sessionConfig" factory-bean="ioAcceptor" factory-method="getSessionConfig" >
            <property name="readerIdleTime" value="10"/>
            <property name="minReadBufferSize" value="512"/>
            <property name="maxReadBufferSize" value="10240"/>
        </bean>
    <bean id="ioAcceptor" class="org.apache.mina.transport.socket.nio.NioSocketAcceptor"
    init-method="bind" destroy-method="unbind">
    <!-- 默认启用的线程个数是CPU 的核数+1, -->
     <!--<constructor-arg index="0" value="10"></constructor-arg>-->
     <property name="defaultLocalAddress" ref="defaultLocalAddress" />  
     <property name="handler" ref="handler" />  
     <property name="filterChainBuilder" ref="filterChainBuilder" />  
    </bean>  
    </beans>  
  • 相关阅读:
    LeetCode 876——链表的中间结点
    LeetCode 206——反转链表
    一次漫长的代码复现经历
    在 C/C++ 中使用 TensorFlow 预训练好的模型—— 直接调用 C++ 接口实现
    编译 TensorFlow 的 C/C++ 接口
    TensorFlow 同时调用多个预训练好的模型
    在 C/C++ 中使用 TensorFlow 预训练好的模型—— 间接调用 Python 实现
    TensorFlow 调用预训练好的模型—— Python 实现
    Python 学习笔记之 Numpy 库——文件操作
    Python 学习笔记之 Numpy 库——数组基础
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4380033.html
Copyright © 2020-2023  润新知