1.背景
作为一名系统架构师/技术经理, 化繁为简是必修课;将繁琐重复的代码封装成简便的使用方式给开发工程师使用,从而提高开发效率, 是件很有成就感的事情
2. 抛个问题
你知道你们项目中有多少地方使用到 HttpSession 的吗?
举凡项目大一点, 时间 3 年+以上的项目, 如果是直接使用 request.getSession 模式来设置属性的, 没有一个人能清晰的知道自己项目中有多少地方使用 session 的
3. 改进
基于上述痛点, 我使用了 SessionAccessor 进行了改进,
<project>
....
<properties>
<version.feilong-platform>1.13.0</version.feilong-platform>
....
</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</groupId>
<artifactId>feilong-util-all</artifactId>
<version>${version.feilong-platform}</version>
</dependency>
....
</dependencies>
....
</project>
使用方式
配置 spring 启动 ContextRefreshedBeanLoggingEventListener
我们可以在控制台 清晰的看到 当前项目使用多少 session
4. 能不能再简单点
有小伙伴说 代码还是太多了 , 还能不能再简单点
下面是本 topic 目标:
<feilong:accessor-session id="guestAllowedSessionAccessor" key="11511" />
5. 本知识点作用及地位
如果只想做普通程序员,可以忽略本知识
如果想做个有追求的程序员,学完之后,你会发现 spring 更多有趣的东西
6. 使用方式
7. 原理
7.1 五要素
- spring.schemas
- feilong.xsd
- spring.handlers
- FeilongNamespaceHandler
- SessionAccessorBeanDefinitionParser
分布图
7.2 spring.schemas
7.3 feilong.xsd
7.4 spring.handlers
7.5 FeilongNamespaceHandler
7.6 SessionAccessorBeanDefinitionParser
8 尾声
知其然而知其所以然, 会让你更自信; 如此这般之后, 你会发现, "哦, mvn:annotation-driven aop:config 这些标签原来是这么实现的啊!" 从而达到心领神会的境界
9 参考
https://docs.spring.io/spring/docs/4.0.x/spring-framework-reference/html/extensible-xml.html