spring - 你如何在一个类中使用另一个类的bean?

标签 spring spring-java-config

使用 xml,我能够定义一个通用的 xml 文件,我可以在其中放置用于其他不同条件文件的通用 bean。 我将配置移动到 psring java config,如何使用 java config 实现此目的?

假设我有一个共同的类:

@Configuration
public class Common {
    @Bean
    public A a(){
        return new A();
    }
}

我想用它作为

@Configuration
public class AConfig {

    @Bean
    public ABB abb(){
        ABB abb = new ABB();
        //TODO abb.set  ????
        return abb;
    }
}

缺少 TODO 部分,我想使用公共(public)类中的 a()。 这可能吗?

最佳答案

最简单的方法就是像这样在私有(private)成员中“ Autowiring ”:

@Configuration
public class AConfig {

    @Autowire
    private A myA;

    @Bean
    public ABB abb(){
        ABB abb = new ABB();
        abb.setA(myA);  // or MUCH better, make the A member of ABB private final and overload a construtor
        return abb;
    }
}

之所以可行,是因为 AConfig 也是一个 Bean。它必须由 Spring Bean Factory 构建。构建完成后,将进行构建后事件 - 其中之一是处理构建后注释,例如 Autowired。所以 'myA' 将在它被用于 @Bean 注释方法之前被设置。

关于spring - 你如何在一个类中使用另一个类的bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19791855/

相关文章:

java - Mockito:我们可以使用 Mockito 模拟在测试类中使用 new 关键字调用的对象吗

java - Spring @Transactional方法——参与事务

java - HTTP 状态 404 : The requested resource is not available/Tomcat7

java - Spring 安全 : Java Config does not work

spring - 如何在 Spring RESTful 中创建过滤器以防止 XSS?

spring - Spring 中 Hibernate 数据库生成错误

Spring security oauth2 和表单登录配置

java - 使用Java Config时如何防止Spring生命周期方法?

java - 在 Spring Boot 应用程序中禁用 Spring Security

java - Spring是否用java配置中的现有bean替换方法调用?