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实现类。