Bean 概述 :: Spring Framework
使用实例工厂方法进行实例化
与通过静态工厂方法进行实例化类似,使用实例工厂方法进行实例化会调用容器中现有 bean 的非静态方法来创建新 bean。要使用此机制,请将 class 属性留空,并在 factory-bean 属性中指定当前(或父或祖先)容器中包含要调用以创建对象的实例方法的 bean 的名称。使用 factory-method 属性设置工厂方法本身的名称。以下示例显示了如何配置此类 bean:
factory-bean="serviceLocator" factory-method="createClientServiceInstance"/> 以下示例显示了相应的类: Java Kotlin public class DefaultServiceLocator { private static ClientService clientService = new ClientServiceImpl(); public ClientService createClientServiceInstance() { return clientService; } } class DefaultServiceLocator { companion object { private val clientService = ClientServiceImpl() } fun createClientServiceInstance(): ClientService { return clientService } } 一个工厂类还可以包含多个工厂方法,如下例所示:
factory-bean="serviceLocator" factory-method="createClientServiceInstance"/> factory-bean="serviceLocator" factory-method="createAccountServiceInstance"/> 以下示例显示了相应的类: Java Kotlin public class DefaultServiceLocator { private static ClientService clientService = new ClientServiceImpl(); private static AccountService accountService = new AccountServiceImpl(); public ClientService createClientServiceInstance() { return clientService; } public AccountService createAccountServiceInstance() { return accountService; } } class DefaultServiceLocator { companion object { private val clientService = ClientServiceImpl() private val accountService = AccountServiceImpl() } fun createClientServiceInstance(): ClientService { return clientService } fun createAccountServiceInstance(): AccountService { return accountService } } 这种方法表明工厂 bean 本身可以通过依赖注入 (DI) 进行管理和配置。请参阅依赖项和配置详情。 在 Spring 文档中,“工厂 bean”指的是在 Spring 容器中配置并通过实例或静态工厂方法创建对象的 bean。相比之下,FactoryBean(请注意大小写)指的是 Spring 特定的FactoryBean实现类。