我知道这个问题听起来很幼稚,但我对web应用程序中bean的范围感到困惑。我知道,对于每个请求,容器都会生成一个新线程,类似地,对于spring web应用程序,每个请求都会生成一个新线程,那么为什么建议将我的控制器、服务定义为singleton,这些bean的范围不应该是prototype吗,因为每个请求(即线程)都有其自己的控制器实例和要使用的服务。
请开导我。
https://gottalovedev.wordpress.com/2014/11/23/bean-scope/
读一下这个。我相信这会有所帮助。
即使创建了新线程(或根据配置重新使用),控制器和服务实例也会重新使用。如果控制器和服务设计得很好,它们在请求方面可能是无状态的,并且是不可变的,这将使它们具有线程安全性。当对象的状态在创建后不会改变时,它也会导致对象创建的数量大大减少。
这将是一个巨大的开销。如果您使代码具有适当的线程安全性,那么没有理由认为每个请求都需要自己的服务bean,这通常意味着不在bean上保留任何每个请求的状态。
问题内容: 我有一个maven spring项目(最新版本),我想编写一些junit测试(最新版本)。 我的问题是我的Spring bean是自动装配的,当我从junit test调用它们时,我得到了空指针异常,因为spring不能自动装配它们。 如何加载上下文,以便自动连线? 问题答案: 您是否学习过Spring参考文档中的“ 测试”一章?这是您应该从以下示例开始的示例: 如果您进入,则需要-但
问题内容: 假设两个类为ClassA和ClassB。假设ClassB依赖于ClassA。在配置文件中,如果将ClassA的范围定义为单例,将ClassB的范围定义为Prototype,那么每次创建ClassA的bean实例时,ClassB的实例会发生什么?每次返回ClassA实例时,将返回相同的ClassB实例还是创建新实例? 谢谢!!! 问题答案: 如果ClassB是原型,则始终创建ClassB
实际应用程序注册一个来添加bean定义。实例本身是通过starter项目中定义的另一个bean构造的,而starter项目本身将另一个bean作为依赖项。 为了使用动态注册的bean,我创建了一个用注释的类,并定义了一个将所述bean作为参数的构造函数。当我通过设置来调试应用程序时,我可以看到在创建动态bean之前调用了组件的构造函数。而且,当时连工厂豆都还没有创建出来。 将带有工厂bean名称的
问题内容: 我创建了一个基于spring,jms和activemq的简单的生产者消费者模拟,我试图从生产者和消费者双方获得高性能, 连接设置: 消费者设置: 生产者设置: 从消费者开始,我设法每秒消耗大约25条消息,这非常慢,我发现瓶颈是我正在使用事务,在谷歌搜索了一段时间之后,并使用了配置,我发现自动装配DefaultMessageListenerContainer并将缓存级别更改为 我的性能提
我正在使用在日志文件中生成和。我可以使用版本。我尝试过使用,但无法使用版本。按照3.0。1文档中,他们已经删除了旧的MDC条目,但是 特雷赛德 我已尝试在zipkin上查看此请求的跟踪,并能够使用traceid和spanid查看它: 有人可以帮助我得到Traceid和spanid在日志文件使用logback/log4j?
我试图改变生产者和消费者配置的顺序,但没有帮助。 编辑:我已经添加了完整的application.yml。当我第一次引导服务时,这个主题在Kafka中是不存在的。 它感觉在生产者和消费者配置之间有冲突,我认为它说有3个分区的原因是消费者中的并发性是3,所以它首先创建有3个分区的主题,然后当它移动到生产者配置时,它不调整分区计数。