[飞天奔月出品] 三分钟 Spring Custom XML Schema 初窥门径

原创
2019/04/30 00:07
阅读数 400

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

展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部