java - 依赖注入(inject)和多个实例

标签 java dependency-injection spring

我正在使用 spring 框架进行依赖注入(inject),但我根本无法确定我是否正确使用了它。想象一下这个案例 - 它不是真实的,只是为了解释我的问题。我有一个 spring boot 应用程序,它与 websocket 连接到某些端点。我有一个类,它具有该客户端的所有可用方法,存储客户端等所需的所有数据,比方说 Client 。然后我有一个静态列表,其中包含所有连接的客户端 List<Client> 。我需要 Client类是 Spring 托管 bean,因为我需要使用 @Service以及所有其他 spring 功能( @Value@Async )等。

问题是,Spring bean 是单例吗?我怎样才能从一个应该由 spring 管理的类实例化对象,但另一方面应该有这个类的多个实例?我无法使用new对吗?`

最佳答案

Spring 创建的对象不一定是单例;这只是默认设置。 Spring 支持多种不同的选项来确定何时创建新对象以及何时回收旧对象。您应该查看“范围”属性的文档并确定最适合您的应用程序的属性。

或者,您可以使用 new 自己创建对象,然后请求 Spring 使用 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html#aop-atconfigurable 中描述的技术为您配置它。

关于java - 依赖注入(inject)和多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33198879/

相关文章:

java - 如何无缝地在tomcat中重新部署 war ?

java - 我可以使用默认消息转换器将 JSON 数据转换为 POJO 吗?

java - 如何处理 REST 服务中的无效参数?

java - Web 服务中 Spring 管理的 Bean 的竞争条件

java - 在 Maven 依赖项中查找包中的所有类

java - 尝试将 XInclude 与 Java 结合使用并使用 xml :id 解析片段

java - 如何获取我的 2 个对象并调用通过它传递变量的函数?

.net - 将DI实践应用于遗留应用程序系统

.net - MEF 和 N 层域驱动设计架构的正确解耦

android - 跨 Gradle 模块使用 Dagger Multibinding