通常一个软件产品出来并不能满足用户的定制化需求,那么我们通常应该是在一个公共的通用性产品上进行迭代开发,以满足客户的需求,但是如果用户规模比较大,那么copy工程进行差异化迭代会变成一个很痛苦的事情。这里将阐述本人这两天想到的解决方案即--spirng插件式迭代开发。
首先解释下为什么是插件式,而不是插件型。我将插件型迭代开发定义为通过开发不同的jar包,然后通过pom文件引入到工程,以此实现功能的差异化。由于spring在通常情况下只会去扫描工程路径下的class文件而不会去扫描jar包中的class文件,导致class文件中的bean不会被加载到spring上下文。而如果修改配置使得去扫描jar的话,系统就会去扫描所有的jar包,在应用启动的时候花费在扫描上的时间会变的不可接受,在则jsp文件定义jar包中是不能被web容器读取的(freemarker虽然可以但是会引入其他问题)。如果程序拓展的代码都在同一个web工程中开发,虽然程序会大了一点,但总体应是可以被接受的。
我的想法是:
1.添加properties文件,管理当前使用的功能
2.添加服务通用适配器,通过读取properties文件,加载不同的service完成功能
3.contorller层使用rest动态url完成到不同页面的映射
以上三点实现原来功能拓展。
还是copy吧,这样做程序的层数变得太多了,可读性会变差!
·