zoukankan      html  css  js  c++  java
  • org.springframework.beans.factory.config.MethodInvokingFactoryBean的使用

      它有两种用法:一个是调用类的静态方法,一个是调用已在IOC容器中的bean的方法。调用结果也分两种,一种是有返回,那么也会作为bean注册到IOC容器中,另一种是没有返回值,那么实际上就是为了在启动时进行方法调用而已。先看静态方法调用:

        <bean id="milletContext" class="cn.hello.millet.MilletContext" init-method="init">
            <constructor-arg ref="backend" />
            <property name="microServicePort" value="${microServicePort}" />
            <property name="rpcServicePort" value="${rpcServicePort}" />
        </bean>
        <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
            <property name="staticMethod" value="cn.hello.millet.MilletContext.setDefault" />
            <property name="arguments">
                <list>
                    <ref bean="milletContext" />
                </list>
            </property>
        </bean>
    public class ServiceDiscovery {
       
         public static MilletContext DEFAULT;
    
         public static void setDefault(MilletContext context){
       DEFAULT = context;
       MatchGroup.DEFAULT.init();
     }

    }

      再看实例方法调用,这里调用了jdk的System方法getProperty获取java的版本号,并注册到IOC容器已供其他bean引入。

    <bean id="javaVersion" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
            <property name="targetClass" value="java.lang.System" />
            <property name="targetMethod" value="getProperty"/>
            <property name="arguments" value="java.version">
    </bean>

      说白了MethodInvokingFactoryBean就是一个FactoryBean,看源码可知:

    public class MethodInvokingFactoryBean extends MethodInvokingBean implements FactoryBean<Object>

      我们也可以自定义一个FactoryBean来生成bean,详见BeanFactory和FactoryBean

  • 相关阅读:
    三、k8s 核心功能
    【RobotFramework】显式等待、隐式等待、强制等待
    如何快速发现缺陷
    冒烟测试知多少
    【Robot Framework】发送GET与POST请求
    Fastdfs.jar手动安装到本地仓库配置
    Lua架构
    SPU与SKU
    docker环境删除与安装配置
    idea-maven导入出现omitted for duplicate且下标标红
  • 原文地址:https://www.cnblogs.com/wuxun1997/p/7473772.html
Copyright © 2011-2022 走看看