Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 关于春天的几个问题_Spring - Fatal编程技术网

Spring 关于春天的几个问题

Spring 关于春天的几个问题,spring,Spring,请回答以下问题 1) 豆子装在哪里。它们是否会加载到Spring应用程序上下文中? 或者它们由ApplicationContext加载到堆中。 2) 在SpringWeb应用程序中,如果应用程序有一天左右没有被使用,ApplicationContext对象是否会被垃圾收集? 3) 如何使单例线程安全? 4) Spring中还有哪些对象存在线程安全问题。 5) BeanPostProcessor的方法对应用程序中的每个bean执行。 在一个复杂的应用程序中有数千个对象时,如何处理它。 BeanPo

请回答以下问题

1) 豆子装在哪里。它们是否会加载到Spring应用程序上下文中?
或者它们由ApplicationContext加载到堆中。
2) 在SpringWeb应用程序中,如果应用程序有一天左右没有被使用,ApplicationContext对象是否会被垃圾收集?

3) 如何使单例线程安全?
4) Spring中还有哪些对象存在线程安全问题。
5) BeanPostProcessor的方法对应用程序中的每个bean执行。
在一个复杂的应用程序中有数千个对象时,如何处理它。

BeanPostProcessor是线程安全的吗?

我认为你最好把这些问题分开——每个问题都应该有一个专门的线程imho

  • 在任何情况下,Spring都会为您加载豆子。怎么用?它读取关于bean的元数据(基于xml/注释),并将它们连接在一起。所以spring为您提供了一个“新的”,但是如何访问这个bean呢?这里是ApplicationContext。它就像所有这些bean的容器,一个允许通过名称(getBean(“beanName”)访问bean实例的容器。 在一种非常简单的方法中,您可以将应用程序上下文视为名称bean的映射。 我不完全理解这里的“堆”问题。Springbean只是JVM中的Java对象,所以是的,基本上它们是在堆中加载的。唯一的区别是它们是由spring加载的,而不是由您的代码加载的

  • 应用程序上下文不会被垃圾收集,因为它跨整个web应用程序存储(并可从中访问)。 当然,如果这个应用程序上下文创建的bean不是单例或其他类型的,那么它们可以被垃圾收集。我知道这是一个模糊的答案,请随意修改你的问题

  • 其核心架构中的Singleton与线程安全无关。是的,spring提供了一个“单例”bean范围。这意味着每次调用getBean时,都会得到相同的实例,因此它是一个单实例(只要您只在spring中管理这个bean)。这个定义不会影响bean的设计,所以如果你,比如说,通过调用它的构造函数(new关键字)来创建这个类的实例,你会得到一个与spring管理的对象完全不同的对象。 了解Spring作为框架的责任从何处开始以及何时结束是很重要的:) 因此,如果您希望您的单例是线程安全的,那么应该将其设计为线程安全的。 最好是在无状态下进行,但再次强调,它与spring无关,所以请在不同的线程中询问,或者只是在google上询问“线程安全设计”

  • 我不太明白这个问题,所以我无法回答,对不起:(

  • 同样,bean后处理器的线程安全性取决于实际编写的代码,而不是基础结构代码


  • 希望这有助于拆分和细化问题。