首页 > 解决方案 > Spring框架,我需要一个变量来依赖会话

问题描述

我正在制作一个简单的文件服务器应用程序。该应用程序正在扫描文件的当前位置并将它们显示给用户。

我需要一个变量,即会话本地的当前路径。我想避免一个用户将目录更改为另一个用户的情况。

原样:

User1 正在打开主页(当前位置 Z:/),user1 正在将目录更改为 Z:/foo,User2 正在打开主页,他的主页是 Z:/foo。

成为:

User1 正在打开主页(当前位置 Z:/),user1 正在将目录更改为 Z:/foo,User2 正在打开主页,他的主页是 Z:/,但 User1 仍在 Z:/foo

我试图使用@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)

但是要么我(在编码方面)犯了一些错误,要么它对我不起作用

标签: javaspringspring-mvc

解决方案


您必须创建单独的会话范围 bean 并在需要会话范围数据时注入它 - 即使在应用程序范围 bean 中也是如此。例如

@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
@Component
public class UserSpace{

    private File userRoot=....somehow set that on bean creation - eg at @PostConstruct
   .....other fields if needed
}

接着

@Service
class YoutService{

  @Autowired
  private UserSpace userSpace;// this will be session scoped proxy

}

推荐阅读