您的位置:首页 > 编程语言 > Java开发

Spring Boot+Jersey+Mybatis打包

2017-04-20 00:00 423 查看
最近有空将公司代码重构改成Spring Boot+Jersey+Mybatis的模式,在打包的过程中遇到不少问题,现将经验教训分享出来。

SpringBoot一般可直接通过Application.run来执行,如果要上线部署,可以jar包运行,或者war包放在web容器运行。

如果要打war包,用原生maven打war包插件便能打包成功,只是这样的war包缺少web.xml启动,因此需要Application继承SpringBootServletInitializer来替代web.xml的作用。同时pom依赖得屏蔽自带的tomcat依次来依赖外部的web服务器。

接着打jar包,也是本次分享的重点,笔者在这遇到不少坑,建议采用官方推荐spring-boot-maven-plugin打包,如果采用maven-jar-plugin打包,会和原生springboot启动流程冲突,如果采用maven-shade-plugi打包则可能会解析不了springboot原生jar包。当打包运行时会发现其实仍然有问题,其实就是jersey的解析资源方式不支持压缩包内的资源,因此需采用如下编程扫描方式,代码如下:

ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
scanner.addIncludeFilter(new AnnotationTypeFilter(Path.class));
scanner.addIncludeFilter(new AnnotationTypeFilter(Provider.class));
this.registerClasses(scanner.findCandidateComponents("com.retail.mtapp.controller").stream()
.map(beanDefinition -> ClassUtils
.resolveClassName(beanDefinition.getBeanClassName(), this.getClassLoader()))
.collect(Collectors.toSet()));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Spring Boot jersey