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

销毁类的所有会话作用域bean

艾修筠
2023-03-14

有没有办法销毁特定类的所有创建的会话范围bean(并在需要时让spring重新创建)?

例如,两个用户访问应用程序,然后每个用户将有一个bean。我想毁掉这两颗豆子。

用例:

管理员正在更新菜单栏。菜单栏列表数据存储在会话范围的bean中。管理员的bean应该被销毁,菜单栏应该被更新。当然,其他人的菜单也应该更新,所以其他bean也应该被销毁。

注1:不同的用户可能会看到不同的菜单,因此bean是会话范围的,而不是单例的。

注意2:我不想让用户的整个会话无效,而只是那个bean

我找到了销毁当前scopebean的方法。但我无法从其他会话中销毁bean。

((ScopedObject) myBean).removeFromScope();

谢谢!!

共有1个答案

宰父单弓
2023-03-14


对于这样的方法,我更喜欢事件,Spring提供了一个Spring事件API(Spring-上下文依赖项)。
您可以在bean中注入一个Application ationEventPublisher实例引发其他一些bean的状态更改的类,这些bean可以注册一个偶数侦听器(@EventListener(条件="..."))来读取此更改事件。

例如,出版商:

@Component
public class PublisherBean{

    private final ApplicationEventPublisher publisher;

    @Autowired
    public PublisherBean(ApplicationEventPublisher publisher) { ... }

    public void createOrder(Order order) {
        // ....
        this.publisher.publishEvent(new OrderCreatedEvent(order)); 
    }    
}

订阅者/听众:

@Component
public class ListenerBean{

  @EventListener(condition = "#creationEvent.awesome")
  public void handleOrderCreatedEvent(CreationEvent<Order> creationEvent) {
    ... 
  }

}

你可以在这里看到更多信息。

 类似资料:
  • 我是ejbs的新手,我想知道有状态会话bean是否会被销毁。我在servlet中注入了一个有状态会话bean。即使在30分钟后,我看到豆子是活跃的。我使用jboss eap 6.0。我相信Http会话与有状态会话bean无关。我使Http会话无效,以确保Http会话与有状态会话bean无关。那么,如果我的应用程序有许多用户,并且对于每个用户,如果我创建一个新bean,我的服务器的性能就会下降。容器

  • 我正在用Spring开发一个web应用程序,它有两种类型的bean作用域--singleton和session。会话级bean使用由单例提供的不同服务。其中一个服务负责从用户会话中清理文件。这在正常使用下工作正常,但当应用程序正在关闭时,它就失败了。会话级bean在单例之后被销毁。这意味着会话bean请求服务已经被销毁。 我的应用程序所需的bean销毁顺序是: null

  • 问题内容: 我在iOS应用中使用Firebase身份验证。当用户使用Firebase登录我的应用程序然后注销该用户的所有其他设备(会话)时,Firebase中是否有任何方法?我可以使用Firebase admin SDK来做到这一点吗? 问题答案: 当我遇到此问题时,我已使用云功能解决了该问题,请访问此链接以获取更多详细信息https://firebase.google.com/docs/auth

  • 问题内容: 我创建了一个基于会话的简单登录页面。 并添加了一个包含此内容的注销页面 现在,当我关闭浏览器/页面并重新打开它时,会话的值仍然存在。 我想知道如何完全销毁页面/浏览器关闭上的会话。 问题答案: 如果您使用: 关闭浏览器时,您的会话cookie将会被破坏…因此,在关闭浏览器之前,您的会话将是良好的。IE浏览器 您登录并登录,然后关闭浏览器,然后重新打开,再次进入该站点,您将不会登录。

  • 问题内容: 从php.net获得它,但是我不确定这是每个人如何破坏所有会话的方式吗? 代码会破坏所有会话吗?这是最常见的方式吗?你们如何破坏php会话? 哦,对了,那是什么?所有会话名称?例如,......? 我不需要再使用了吗? 和之间有什么区别? 问题答案: 首先,您应该知道什么是会话:您可以将会话视为与随机标识符(会话ID)相关联的服务器端数据容器。该会话ID需要由客户端提供,以便服务器可以

  • 问题内容: 我正在尝试正确注销管理员用户。这是我的功能: 基本上,一旦我对密码进行了身份验证,就将会话设置为有效(总共只有1个用户)。现在,当管理员点击注销时,我想销毁当前会话,并销毁cookie,以便他们不能只是使用浏览器中存储的会话cookie返回管理页面。但是我的代码不起作用。我点击注销,然后我可以直接导航回到管理页面。但是,如果我删除Cookie,则该功能非常完善。那么这里的cookie删