做项目过程中,有时用户需要很快添加一些小的功能,然而程序开发编译部署重启,需要时间,而且有时还不方便重启应用,如果groovy能够编写spring 组件动态加载就好了。查了资料,spring框架提供了支持,但是很有限。其中我收藏的这个帖子研究比较深入仔细,帮助比较大。
帖子中提供的是单个groovy类的加载方法,我改版为配置目录的方式。同时在调试中发现了其他一些问题。
1、spring配置中的资源路径并加载groovy类,与根据资源路径判断资源修改时间的资源获取方式不一致,spring content一样的资源加载器,获取不到资源。因为代码中保存了groovy类的文件系统全路径,所以需要用文件系统资源类加载文件,获取修改时间属性。
2、groovy类中不能用注解的方式自动注册,上面的类加载方式加载的其他groovy类。各种测试,都显示依赖的groovy类已经加载bean,而且类名称跟代码要求的一致,但是spring 根据类型就是找不到匹配的类。将依赖groovy类添加继承接口,按照接口注入,成功。但是此接口必须是java类编写或groovy预编译的类,动态加载的groovy编写的接口,同样不能成功。
?
????? 总结:groovy全套实现springmvc 组件还是有很多限制,尽量当做胶水,进行功能组合实现某些需求。
?