当前位置: 首页 > 知识库问答 >
问题:

Spring@组件@自动连线

樊博雅
2023-03-14

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

附言:我知道它接近基础,听起来很一般。只是想自己说清楚。

提前致谢

共有2个答案

洪开诚
2023-03-14

默认情况下,Spring托管bean的作用域是单例(只创建了一个实例),如果您想要多个实例,则将其定义为原型

使用以下注释:

@Scope("prototype")

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

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

孔征
2023-03-14

当您创建bean定义时,您创建了一个用于创建由该bean定义定义的类的实际实例的方法。bean定义是一个配方的想法很重要,因为这意味着,与类一样,您可以从一个配方创建多个对象实例。

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

下列作用域是现成支持的。您也可以创建自定义范围。

单例(默认)将单个 Bean 定义的范围限定为每个 Spring IoC 容器的单个对象实例。

原型将单个bean定义的范围限定为任意数量的对象实例。

请求将单个bean定义的范围限定为单个HTTP请求的生命周期;也就是说,每个HTTP请求都有自己的bean实例,该实例是在单个bean定义的基础上创建的。仅在web感知的Spring ApplicationContext的上下文中有效。

会话将单个 Bean 定义限定为 HTTP 会话的生命周期。仅在网络感知的Spring应用程序上下文的上下文中有效。

全局会话将单个 Bean 定义限定为全局 HTTP 会话的生命周期。通常仅在 Portlet 上下文中使用时才有效。仅在网络感知的Spring应用程序上下文的上下文中有效。

应用程序将单个bean定义的范围限定为ServletContext的生命周期。仅在web感知Spring ApplicationContext的上下文中有效。

Websocket将单个bean定义的范围限定为Websocket的生命周期。仅在web感知Spring ApplicationContext的上下文中有效。

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

 类似资料:
  • 我有个小问题。如果类是用@component、@service、@controller或@repository注释的,并且我想注入它的依赖项,我需要@autowired吗? 这段代码对我来说非常适用,因为它是UserDeviceService中指定的@Service注释。是因为那个吗?

  • 那么我的问题是,@javax为什么会这样做。注释。资源工作,但@AutoWired没有工作。为了在Restful控制器上进行测试,我尝试将MappingJackson2HttpMessageConverter注入@Autowired,在启动时,容器未能找到符合条件的bean,即使该类位于路径上。现在,为了解决这个问题,我进入了一个上下文xml文件并添加了bean: 然后在测试类中有成员变量: 然后

  • 我定义了一个简单的类来保存我的elasticsearch客户端(称为ElasticClientConfig.java)的配置属性。 我为我的开发、生产和测试环境定义了一个配置。每个配置概要文件都有一个方法,该方法返回ElasticClientConfig类型的bean,并使用特定于环境的参数构建一个MyConfig对象。以下是开发版本: 我在我的网站中将我的活动配置文件设置为“dev”。xml文件

  • 我对从类扩展的Spring bean初始化有一个问题。我完全卡住了。 类hiearchy如下所示: 提到该类对需要初始化的服务很有用: 创建bean时: 则中的为null-似乎没有自动连线。 它能否与是从抽象类扩展而来的这一事实相联系? 这个bean可能从未初始化过... 这是个例外: org.springframework.beans.factory.UnsatisfiedDependencyE

  • 我是Spring的新手。我正面临Spring-Boot的问题。我正在尝试将外部配置文件中的字段自动装配到自动装配的bean中。我有以下类 应用程序。Java语言 AppConfig。Java语言 服务接口 服务1 我无法在App类的postconstruct方法中显示服务名称变量。我这样做对吗?

  • 问题内容: 可以与列表一起使用吗? 就像我有带有mimetypes的属性文件,而在我的班级文件中,我有类似的东西 问题答案: Spring 4支持自动收集给定类型的所有bean并将其注入到集合或数组中的能力。 例: