java - Spring - 引用 Java bean 在 XML 中创建 bean,反之亦然

标签 java spring

如果我在 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/

相关文章:

java - 使用 Ajax 将 json 对象传递给 Spring mvc Controller

java - @Qualifier 在 Junit4 中不起作用

java - Kotlin Mockito 总是返回作为参数传递的对象

java - 如何在 RecyclerView.Adapter 中打开片段以让用户转到其他用户的个人资料

java - 实体没有表单对象所需的字段

java - 为什么我无法检索刚刚保留的实体?

java - 使用 JNDI 作为我的数据源和属性文件的位置

java - 编辑 ObjectArrayList JAVA 中对象的值

java - float 大于或小于零

java - 读取 Spring 3 类中的所有 beans