Skip to content
feilong edited this page Jul 28, 2022 · 36 revisions

1.背景

某商城的代码

可以看出,表达的意思是在方法体里面取到 当前登陆会员的 id,用于后续操作

2.问题

作为一个非处女座的"处女座"程序员,看到上述代码,会感到很别扭

  1. 代码不优雅
  2. 可不可以直接在方法里面写memberId参数呢?

3.简单配置

使用 feilong-spring-web项目

3.1 maven 依赖

	<project>
	
		....
		<properties>
			<version.feilong-spring>5.0.0</version.feilong-spring>
			....
		</properties>
		
		....
		<repositories>
			<repository>
				<id>feilong-repository</id>
				<url>https://raw.github.com/venusdrogon/feilong-platform/repository</url>
			</repository>
		</repositories>
		
		....
		<dependencies>
			....
			<dependency>
				<groupId>com.feilong.platform.spring</groupId>
				<artifactId>feilong-spring-all</artifactId>
				<version>${version.feilong-spring}</version>
			</dependency>
			....
		</dependencies>
		
		....
		
	</project>

3.2 spring mvc 配置

spring mvc 配置 com.feilong.spring.web.servlet.mvc.method.annotation.LoginMemberHandlerMethodArgumentResolver

3.3 参数说明

属性名称 描述 类型
sessionKey 在session中保存的标识用户session对象的key String
sessionMemberClass session 里面存放的 用户对象类型 Class
sessionMemberIdName 对象的主键名称 String

4.使用

现在你可以这么写

5.内部原理

  1. 如果session中的 sessionKey 是 null,那么直接返回null;
  2. 如果标识的是session对象本身 sessionMemberClass,那么直接获取返回;
  3. 如果标识的是session对象中的某个字段 sessionMemberIdName,那么提取该字段返回;
  4. 如果没有配置 sessionMemberIdName,那么返回null.

--完

Clone this wiki locally