Spring 6.0官方文档示例(23): singleton类型的bean和prototype类型的bean协同工作的方法(二)
发布人:shili8
发布时间:2025-03-01 20:35
阅读次数:0
**Spring6.0官方文档示例(23):singleton类型的bean和prototype类型的bean协同工作的方法(二)**
在前一篇文章中,我们讨论了如何让singleton类型的bean和prototype类型的bean协同工作。我们使用了一个简单的例子,展示了如何注入一个singleton类型的bean到一个prototype类型的bean中。
但是,在实际应用中,我们可能需要更复杂的场景。在本篇文章中,我们将讨论如何让多个singleton类型的bean和多个prototype类型的bean协同工作。
**示例代码**
我们将创建一个简单的示例,展示了如何让多个singleton类型的bean和多个prototype类型的bean协同工作。示例代码如下:
java// SingletonBean.javapackage com.example.spring6;
import org.springframework.stereotype.Component;
@Componentpublic class SingletonBean {
public String sayHello() {
return "Hello, I'm a singleton bean!";
}
}
java// PrototypeBean.javapackage com.example.spring6;
import org.springframework.stereotype.Component;
@Componentpublic class PrototypeBean {
private final SingletonBean singletonBean;
@Autowired public PrototypeBean(SingletonBean singletonBean) {
this.singletonBean = singletonBean;
}
public String sayHello() {
return "Hello, I'm a prototype bean! " + singletonBean.sayHello();
}
}
java// AnotherSingletonBean.javapackage com.example.spring6;
import org.springframework.stereotype.Component;
@Componentpublic class AnotherSingletonBean {
public String sayGoodbye() {
return "Goodbye, I'm another singleton bean!";
}
}
java// AnotherPrototypeBean.javapackage com.example.spring6;
import org.springframework.stereotype.Component;
@Componentpublic class AnotherPrototypeBean {
private final SingletonBean singletonBean;
private final AnotherSingletonBean anotherSingletonBean;
@Autowired public AnotherPrototypeBean(SingletonBean singletonBean, AnotherSingletonBean anotherSingletonBean) {
this.singletonBean = singletonBean;
this.anotherSingletonBean = anotherSingletonBean;
}
public String sayGoodbye() {
return "Goodbye, I'm another prototype bean! " + singletonBean.sayHello() + " " + anotherSingletonBean.sayGoodbye();
}
}
java// Application.javapackage com.example.spring6;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplicationpublic class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
**配置文件**
我们需要在application.properties中配置bean的类型。
propertiesspring.main.allow-circular-references=true# Singleton beanspring.bean-definition-profiles.singleton.enabled=true# Prototype beanspring.bean-definition-profiles.prototype.enabled=true
**测试**
我们可以使用Spring Boot Test来测试我们的示例代码。
java// SpringBootTest.javapackage com.example.spring6;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTestpublic class SpringBootTest {
@Autowired private PrototypeBean prototypeBean;
@Test public void testPrototypeBean() {
System.out.println(prototypeBean.sayHello());
}
}
java// AnotherSpringBootTest.javapackage com.example.spring6;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTestpublic class AnotherSpringBootTest {
@Autowired private AnotherPrototypeBean anotherPrototypeBean;
@Test public void testAnotherPrototypeBean() {
System.out.println(anotherPrototypeBean.sayGoodbye());
}
}
**结论**
在本篇文章中,我们讨论了如何让多个singleton类型的bean和多个prototype类型的bean协同工作。我们使用了一个简单的示例,展示了如何注入一个singleton类型的bean到一个prototype类型的bean中,并且测试了我们的示例代码。
通过阅读这两篇文章,你应该能够理解如何让singleton类型的bean和prototype类型的bean协同工作,并且能够应用这种知识来解决实际问题。

