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

  • 相关阅读:
    centos安装docker
    centos 安装nginx遇到的问题
    IntelliJ IDEA 2018.3 永久激活 破解[Windows]
    mysql 8.0.12重置密码
    mysql8.*忘记密码
    CentOS安装Hadoop
    执行 systemctl start firewalld 命令后出现Failed to start firewalld.service: Unit is masked
    Centos操作命令
    解决CentOS7关闭/开启防火墙出现Unit iptables.service failed to load: No such file or directory.
    Java并发Lock接口
  • 原文地址:https://www.cnblogs.com/wuxun1997/p/7473772.html
Copyright © 2011-2022 走看看