gpt4 book ai didi

spring - 在 Spring AOP 中获取 session

转载 作者:行者123 更新时间:2023-12-04 18:42:18 26 4
gpt4 key购买 nike

我不确定我的代码是否是线程安全的,有人可以帮忙吗?

@Aspect
public class MyAspect {

@Autowired
private HttpSession session;


@Before("...")
private void myMethod() {
seesion.getId();
}

}

因为 MyAspect 的范围是默认的(单例),所以同时存在很多请求,也有很多 session 。好的,我的代码中有哪个 session ?它是线程安全的吗?或者它是一个错误的代码,如果它是错误的,我该怎么办?

谢谢!

最佳答案

对,没关系。

  • 您的 MyAspect无论如何都应该注册为bean。
  • 是否是 AOP 方面并不重要:依赖注入(inject)基础结构相同。
  • 现在约HttpSession .
    此对象未注册为 bean,但 Spring 为他提供了一个技巧 - WebApplicationContextUtils.SessionObjectFactory .此对象注册为
  • beanFactory.registerResolvableDependency(HttpSession.class, new SessionObjectFactory());
    当注入(inject)起作用时,它会包裹 SessionObjectFactoryProxyThreadLocal<RequestAttributes> 按需调用真实方法多变的。这意味着您的 MyAspect.myMethod 的每次调用做混凝土的东西 HttpSession ,当然,如果您当前的线程是 Servlet 线程。

    因此,您的问题的答案是:是的,它是 线程安全 .

    关于spring - 在 Spring AOP 中获取 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22859555/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com