• Spring IOC容器基于配置文件装配Bean(5) ------通过工厂方法配置bean


    一、通过自定义工厂方法装配Bean

    spring--factory.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">
    
            <!--通过静态工厂方法来配置bean   注意:不是配置静态工厂方法实例,而是配置bean实例-->
            <!--
                class:指向静态工厂方法的全类名
                factory-method:静态工厂方法名
                constructor-arg:如果静态工厂方法需要传入参数,则用constructor-arg配置参数
            -->
            <bean id="carBean1" class="com.spring.cn.config.factory.StaticCarBeanFactory"
                    factory-method="getCar">
                    <constructor-arg name="name" value="baoma"/>
            </bean>
    
    
    
    
            <!--配置工厂实例-->
            <bean id="instanceCarBeanFactory" class="com.spring.cn.config.factory.InstanceCarBeanFactory"/>
    
            <!--通过实例工厂方法来配置bean-->
            <!--
              factory-config:指向实例工厂方法的名字
              factory-method:实例工厂方法名
              constructor-arg:如果静态工厂方法需要传入参数,则用constructor-arg配置参数
          -->
            <bean id="carBean2" factory-bean="instanceCarBeanFactory" factory-method="getCar">
                    <constructor-arg name="name" value="aodi"/>
            </bean>
    </beans>

    二、通过FactoryBean装配Bean

    spring-factory-bean.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!--通过FactoryBean来配置bean的实例-->
        <!--
            class:指向CarFactoryBean的全类名
            property:配置factoryBean的属性
    
            但实际返回的实例是FactoryBean中的getObject()方法返回的实例!
        -->
        <bean id="carBean" class="com.spring.cn.config.factoryBean.CarFactoryBean">
            <property name="brand" value="宝马"/>
            <!--<property name="brand" value="BMW"/>-->
        </bean>
    </beans>
    作者:donleo123
    本文如对您有帮助,还请多推荐下此文,如有错误欢迎指正,相互学习,共同进步。
  • 相关阅读:
    js格式化金额(保留指定小数位,不进行四舍五入每隔三位添加‘,’)
    原生js ajax下载excel,pdf,兼容ie8
    css文本超出显示点点....
    Vue 响应式删除 Vue.delete( target, propertyName/index )
    java报错:com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize out of START_ARRAY token
    Vue 神奇的BUG
    vue 诡异问题
    str.indexOf('') == 0
    vue 绑定style,class
    uniapp 时间轴
  • 原文地址:https://www.cnblogs.com/donleo123/p/14069374.html
Copyright © 2020-2023  润新知