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>

 

posted @ 2020-12-01 17:02  donleo123  阅读(104)  评论(0编辑  收藏  举报