spring怎么处理环形依赖(spring怎么解决的循环依赖)

spring 我是如何解决循环依赖的

老铁们,大家好,相信还有很多朋友对于spring怎么处理环形依赖和spring不建议循环依赖的相关问题不太懂,没关系,今天就由我来为大家分享分享spring怎么处理环形依赖以及spring不建议循环依赖的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

本文目录

  1. spring mvc依赖注入是单例的吗
  2. 如何在Maven中配置Spring依赖
  3. spring怎么处理环形依赖

spring mvc依赖注入是单例的吗

springmvc依赖注入一般不是单例,是多例,只有这样controller类中的非静态变量才能保证是线程安全的,但是在默认状态下,springmvc根据以下两点1、为了性能。2、不需要多例,默认单例。

另外,springmvc通过@Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE)可成为多例模式,或者写成@Scope("prototype")。

在此再重复一次,单例模式下定义成员变量是线程不安全的。

使用单例模式是为了性能(无需频繁初始化),同时,也没有必要使用多例模式。

如何在Maven中配置Spring依赖

Spring是一个轻量级的DI/IoC和AOP容器的开源框架,提倡以“最少侵入”的方式来管理应用中的代码,框架结构如下图:

添加Spring依赖主要包括4个方面:

(1)spring核心依赖(基础配置)

spring-core、spring-beans、spring-context

其中spring-context实现了Spring注入容器并且依赖:spring-core,spring-expression,spring-aop以及spring-beans

(2)springdao依赖(提供JDBCTemplate)

spring-jdbc、spring-tx

(3)springweb依赖(配置SpringMVC)

spring-web、spring-webmvc

(a)spring-web包包含Servlet和Portlet所需要通用,spring-webmvc则在Servlet环境中启用MVC支持。

(b)由于spring-webmvc依赖于spring-web,所以定义了spring-webmvc依赖后,可以不用显示的在pom定义spring-web。

(4)springtest依赖

spring-test

从Spring3.2开始,SpringMVCTest项目已经被包含到核心的SpringTest中。所以,从Spring3.2开始,仅需要在依赖配置中配置spring-test依赖即可

代码如下:

<!--Spring依赖-->

<!--1.Spring核心依赖-->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>4.3.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>4.3.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>4.3.7.RELEASE</version>

</dependency>

<!--2.Springdao依赖-->

<!--spring-jdbc包括了一些如jdbcTemplate的工具类-->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>4.3.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-tx</artifactId>

<version>4.3.7.RELEASE</version>

</dependency>

<!--3.Springweb依赖-->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>4.3.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>4.3.7.RELEASE</version>

</dependency>

<!--4.Springtest依赖:方便做单元测试和集成测试-->

<dependency>

<groupId>org.springframework</g

spring怎么处理环形依赖

Spring解决循环依赖的诀窍就在于singletonFactories这个三级cache。这个cache的类型是ObjectFactory。这里就是解决循环依赖的关键,发生在createBeanInstance之后,也就是说单例对象此时已经被创建出来(调用了构造器)。

这个对象已经被生产出来了,虽然还不完美(还没有进行初始化的第二步和第三步),但是已经能被人认出来了(根据对象引用能定位到堆中的对象),所以Spring此时将这个对象提前曝光出来让大家认识,让大家使用。

如果你还想了解更多这方面的信息,记得收藏关注本站。

Spring 是如何解决循环依赖的

本文内容来自互联网,若需转载请注明:https://bk.66688891.com/12/105168.html