如果我在 Java 中使用@Bean 创建了一个 bean,那么当在那里创建一个 bean 时,我如何在 XML 中引用这个 bean? 如果我有一个用 XML 创建的 bean,那么当在那里创建一个 bean 时,我如何在 Java 中引用这个 bean?
最佳答案
在 Java 类中创建 bean 等同于在 XML 文件中创建 bean。因此,如果您想在 XML 文件中引用在 Java 类中创建的 bean,只需使用 ref= beanName
属性来引用 bean,反之亦然。
在官方文档中说:
4.2.1。声明一个 bean
要声明一个 bean,只需使用 @Bean 注释来注释一个方法。当 JavaConfig 遇到这样的方法时,它将执行该方法并将返回值注册为 BeanFactory 中的 bean。默认情况下,bean 名称将是方法名称。
@Configuration
public class AppConfig {
@Bean
public TransferService transferService() {
return new TransferServiceImpl();
}
}
上面的完全等同于下面的appConfig.xml:
<beans>
<bean name="transferService" class="com.company.TransferServiceImpl"/>
</beans>
两者都会导致一个名为 transferService 的 bean 在 BeanFactory/ApplicationContext 中可用,绑定(bind)到 TransferServiceImpl 类型的对象实例:
而且你还需要确保你添加了
<bean class="org.springframework.config.java.process.ConfigurationPostProcessor"/>
在您的 xml 中,因此如果您的 XML 配置和 Java 配置在不同的上下文中声明,则它们具有相同的 bean 定义。
如果您想将传统的 bean 配置从 XML 包含到 Java 配置中,那么您需要将 XML 资源导入该类,如下所示:
@ImportResource({"classpath*:your-configuration.xml"})
关于java - Spring - 引用 Java bean 在 XML 中创建 bean,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57848151/