Java 在初始化另一个Bean之前自动连接Bean

Java 在初始化另一个Bean之前自动连接Bean,java,spring,spring-boot,Java,Spring,Spring Boot,春季问题 我有两个关于春天的问题 如果我这样声明bean: @Service public class Downloader { @Bean public String bean1() { return "bean1"; } } 然后,如果其他类将自动连接“bean1”,那么方法bean1将被调用几次?或者创建并重用一个bean1实例 第二个问题。如何自动连接其他bean,例如“bean2”,它是字符串“externalBean”,可用于构造bean1

春季问题

我有两个关于春天的问题

如果我这样声明bean:

@Service
public class Downloader {
    @Bean
    public String bean1() {
        return "bean1";
    }
}
然后,如果其他类将自动连接“bean1”,那么方法bean1将被调用几次?或者创建并重用一个bean1实例

第二个问题。如何自动连接其他bean,例如“bean2”,它是字符串“externalBean”,可用于构造bean1

@Service
public class Downloader {

    @Autowire
    private String bean2;       

    @Bean
    public String bean1() {
        return "bean1" + this.bean2;
    }
}

目前我正在尝试自动连线这个bean2,但在bean1调用期间它是空的。是否有任何机制,我可以指定这个顺序。我不知道在Spring文档中查找此类信息的上下文是什么。

使用的只是简单的
@Bean
注释将范围设置为标准单例,因此将只创建一个。根据文档,如果要更改,则需要显式添加另一个注释:

@作用域将bean的作用域从单例更改为指定的作用域


只需使用简单的
@Bean
注释即可将范围设置为标准单例,因此只创建一个。根据文档,如果要更改,则需要显式添加另一个注释:

@作用域将bean的作用域从单例更改为指定的作用域

然后,如果其他类将自动连接“bean1”,则方法bean1 会打几次电话吗?或者将创建一个bean1实例 再利用

只有一个
bean1
实例,因为隐式作用域是Singleton(不存在
@scope
注释)

第二个问题。如何自动连接其他bean,例如“bean2”,它是 字符串“externalBean”,可用于构造bean1

@Service
public class Downloader {

    @Autowire
    private String bean2;       

    @Bean
    public String bean1() {
        return "bean1" + this.bean2;
    }
}
由于它是
字符串
,因此可能需要
@限定符

@Bean
@Qualifier("bean2")
public String bean2() {
    return "bean2";
}
然后

然而,这也行得通。
Spring将能够查看Bean的名称,并将其与参数的名称进行比较

@Bean
public String bean2() {
    return "bean2";
}


Spring根据Bean依赖项自动计算顺序

然后,如果其他类将自动连接“bean1”,则方法bean1 会打几次电话吗?或者将创建一个bean1实例 再利用

只有一个
bean1
实例,因为隐式作用域是Singleton(不存在
@scope
注释)

第二个问题。如何自动连接其他bean,例如“bean2”,它是 字符串“externalBean”,可用于构造bean1

@Service
public class Downloader {

    @Autowire
    private String bean2;       

    @Bean
    public String bean1() {
        return "bean1" + this.bean2;
    }
}
由于它是
字符串
,因此可能需要
@限定符

@Bean
@Qualifier("bean2")
public String bean2() {
    return "bean2";
}
然后

然而,这也行得通。
Spring将能够查看Bean的名称,并将其与参数的名称进行比较

@Bean
public String bean2() {
    return "bean2";
}



Spring根据Bean依赖项自动计算顺序。

有关何时实例化新Bean的信息,请参阅签出。有关何时实例化新Bean的信息,请参阅签出。谢谢。这回答了我的问题。ęki!:)@MarcinKapusta范围注释与您的问题无关。您不需要它。它隐式地解释了@Bean行为库。这回答了我的问题。ęki!:)@MarcinKapusta范围注释与您的问题无关。您不需要它。它隐式地解释了@Bean行为