非Polarion系统准备Spring环境
Spring全家桶Jar包下载
下载所有依赖可以参考这篇文章使用mvn命令,下载工程的所有依赖软件包
这里附上一份pom.xml文件供大家使用
1 |
|
当然你也可以手动下载Spring相关的Jar包到本地
转换Jar包到OSGI Bundle
单个转换
这部分直接参考这篇文章使用eclipse将非OSGi jar转换成OSGi的Bundle
把所有Spring的Jar包转换成OSGI Bundle后,我们需要对core包进行单独的配置,见后文
统一打包
新建一个全新插件,然后把上面所有的Jar包拖到Runtime中的ClassPath中,最后在Exported Packages中把所有的包都选择导出
修复在OSGI环境下自动扫描失效
自己编译的Core项目
打开Core项目,进入META-INF目录下的MANIFEST.MF文件 然后转到Dependencies栏,在Imported Packages下选择Add,添加org.eclipse.core.runtime
如果没有org.eclipse.core.runtime,请先检查Eclipse有没有正确配置OSGI环境
Polarion 21版本以后自带的Spring包改造
找到\polarion\plugins\org.springframework.spring-core_XX.RELEASE.jar包,使用解压缩软件打开,进入到META-INF目录下的MANIFEST.MF文件,添加一行
1 |
|
保存提示文件被修改,点击确认就行,注意MANIFEST.MF的最后一行为空,不然会标红,但是貌似不影响使用
为什么要引入这个包呢?因为Spring扫描资源是由PathMatchingResourcePatternResolver类实现的,它对OSGI环境的支持就是在静态代码块中,利用当前类的类加载器读取这个包下的FileLocator类,然后反射调用resolve方法查询Class类,附上部分代码
1 |
|
如果不引入这个包,后续就不能使用自动扫描,只能手动在配置类中用@Bean注解来标识
测试
新建一个com.fasnote.test项目,用于测试在其他项目创建上下文,在Dependencies栏中,引入你所编译的spring-context包
主测试类
1 |
|
配置类
1 |
|
测试bean
1 |
|
结果