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

Spring事件和范围请求

荀豪
2023-03-14

我想在我的web应用程序中使用Spring事件与我的bean“说话”。

例如,fired事件的bean如下所示:

@Controller
@Scope("request")
@KeepAlive
public class Controller extends InitializingBean, ApplicationEventPublisherAware {

private ApplicationEventPublisher applicationEventPublisher;    

public void test() {
  applicationEventPublisher.publishEvent(new TestEvent(this));
}

}
@Component
@Scope("request")
@KeepAlive
public class Module implements ApplicationListener<TestEvent> {

    @Override
    public void onApplicationEvent(TestEvent event) {

    }

}

所以,我的问题是:

事件侦听器是作用域请求是否可能?而如何做到这一点呢?

谢谢

共有1个答案

督俊雅
2023-03-14

尝试在单个ApplicationListener中注入一个作用域代理来处理TestEvent。

@Scope(proxyMode=ScopedProxyMode.TARGET_CLASS, value="request")
public class TestEventHandler {

    public void onTestEvent(TestEvent event) 
        // ...  
    }

}
  public class TestEventApplicationListener implements ApplicationListener<TestEvent> {

    @Autowired
    private TestEventHandler handler;

    @Override
    public void onApplicationEvent(TestEvent event) {

        handler.onTestEvent(event);

    }
}
 类似资料:
  • 我使用spring指南中简单REST服务的纯示例代码作为基础:http://spring.io/guides/gs/rest-service/ 我添加了单个Bean配置: 然后,我修改后的控制器如下所示: 而我正在得到 由于呼叫“/问候” 我在这里读了一些描述:http://docs.spring.io/spring/docs/current/spring-framework-reference/

  • 在请求范围中,bean被定义为HTTP请求,而在会话范围中,bean被定义为HTTP会话。例如, 如果bean范围是请求,并且用户在其用户会话中对网页发出多个请求,则在每个请求上都会创建一个新bean。 而如果范围被定义为bean的会话,如果用户多次请求网页,则在每次请求时都会返回相同的bean。 请让我知道这种理解是否正确?

  • 问题内容: 我有一个名为Bar的类,带有以下注释: 在私人成员上,我具有以下注释: 在春季配置中,我有一个Foo类的bean。如果用它定义的bean 不起作用,则出现以下异常: NoSuchBeanDefinitionException:找不到依赖项为Foo的匹配bean:期望至少有1个有资格作为此依赖项的自动装配候选的bean 一旦我将注入的bean作用域更改为正常工作。 是否自动布线原型作用域

  • 我想问一个关于JAXB将如何维护与生成的类相关联的值的一般性问题。我可以生成这个类,只要它在有效负载中就可以使用它,但是当我转到另一个spring集成过程时,对象似乎不会保留这些值。我知道必须有一种简单的方法来确保生成的对象保留其填充的内容。我可以重新实例化这个类,但这只是一个新的空类。 这是我想完成的事情 要生成的基本XML文档 这将产生 不过我选择得到这个xml可以使用然后我散集它 然后我在流

  • SessionFactory 对象的创建代价很昂贵,它是线程安全的对象,它为所有的应用程序线程所共享。它只创建一次,通常是在应用程序启动的时候,由一个 Configuraion 的实例来创建。 Session 对象的创建代价比较小,是非线程安全的,对于单个请求,单个会话、单个的 工作单元而言,它只被使用一次,然后就丢弃。只有在需要的时候,一个 Session 对象 才会获取一个 JDBC 的 Co

  • 问题内容: 有人可以解释一下我一直只使用“原型”的Spring bean的作用域吗,但是还有其他参数可以代替吗? 我在说什么的例子 问题答案: 从Spring规范开始,支持五种类型的bean作用域: 1.单身人士(默认*) 每个Spring IoC容器将单个bean定义的作用域限定为单个对象实例。 2.原型 将单个bean定义的作用域限定为任意数量的对象实例。 3.要求 将单个bean定义的范围限