首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring @Component @Autowired

Spring @Component @Autowired
EN

Stack Overflow用户
提问于 2017-03-16 09:48:20
回答 2查看 8.3K关注 0票数 2

我有一个带有自动扫描和@Component注释的Spring项目。一些组件需要使用@Autowired注入不同的bean。默认情况下,它将是作为单例创建的同一个组件bean吗?如果是这样,如何将同一组件的不同实例注入到不同的bean中?

P.S.我知道它很基本,听起来很笼统。只是想让我自己明白。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-16 09:52:17

默认情况下,Spring的作用域是singleton (只创建一个实例),如果您希望许多实例将其定义为prototype的话。

使用以下注释:

代码语言:javascript
复制
@Scope("prototype")

下面是一个很好的完整示例:

https://www.mkyong.com/spring/spring-bean-scopes-examples/

票数 3
EN

Stack Overflow用户

发布于 2017-03-16 09:52:20

创建bean定义时,可以创建一个菜谱,用于创建由该bean定义的类的实际实例。bean定义是菜谱这一概念很重要,因为它意味着,与类一样,您可以从单个菜谱中创建许多对象实例。

您不仅可以控制要插入到从特定bean定义创建的对象中的各种依赖项和配置值,还可以控制从特定bean定义创建的对象的范围。这种方法功能强大且灵活,因为您可以选择通过配置创建的对象的作用域,而不必在Java类级别上烘焙对象的作用域。Bean可以定义为部署在多个作用域中的一个:开箱即用,Spring支持七个作用域,其中五个只有在使用web感知的ApplicationContext时才可用。

支持下列范围。还可以创建自定义作用域。

Singleton (默认)将单个bean定义为每个IoC容器的单个对象实例。

Prototype将单个bean定义用于任意数量的对象实例。

请求将单个bean定义转换为单个HTTP请求的生命周期;也就是说,每个请求都有自己的bean实例,该实例是在单个bean定义的背面创建的。只有在web感知的Spring ApplicationContext的上下文中才有效。

会话将单个bean定义转换为HTTP会话的生命周期。只有在web感知的Spring ApplicationContext的上下文中才有效。

GlobalSession将单个bean定义用于全局HTTP会话的生命周期。通常只有在Portlet上下文中使用时才有效。只有在web感知的Spring ApplicationContext的上下文中才有效。

应用程序将单个bean定义转换为ServletContext的生命周期。只有在web感知的Spring ApplicationContext的上下文中才有效。

WebSocket 将单个bean定义用于WebSocket的生命周期。只有在web感知的Spring ApplicationContext的上下文中才有效。

欲了解更多信息,请访问:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42830444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档