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 @   donleo123  阅读(106)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示