Spring Boot 集成 resteasy篇 — jax-rs初步介绍和spring boot集成
来源:互联网 发布:怎样在淘宝联盟买东西 编辑:程序博客网 时间:2024/05/21 11:11
Spring Boot 集成 resteasy篇 — jax-rs初步介绍和spring boot集成
JAX-RS 是代表restful web service的一套规范API,JAX-RS规范基于JAVA编程语言,它是用来创建Restful 风格的web services服务的。Jax-rs使用一系列注解来简化java开发。
JAX-RS也称jsr339 (全称java specifications requests java规范提案第339个),由jcp(java community process)组织经过投票通过。
为了加深对jsr的理解,举一个简单的例子,jsr 330标准就是依赖注入的提案,已经通过。
规范说明
规范定义了一些常见的注解(见下表),用来标注一种资源文件为restfun风格的资源文件
规范实现
下文将以resteasy为例
包引入
<dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jaxrs</artifactId><version>${resteasy.version}</version></dependency><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jaxb-provider</artifactId><version>${resteasy.version}</version></dependency>
resteasy使用ServletContainerInitializer
接口来初始化项目,如果要开启启动扫描,扫描providers和resources。还需要引入另外一个包。
<dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-servlet-initializer</artifactId><version>${resteasy.version}</version></dependency>
跟spring集成,还需要spring的包
<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-spring</artifactId> <version>${resteasy.version}</version> </dependency>
还有一些解析json之类的包
<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson2-provider</artifactId> <version>${resteasy.version}</version> </dependency>
resteasy根据servlet容器的不同,还有些不同,这里讲的是spring boot继承,不过多赘述,详细见这里 , 尽管引了这些包,项目也没有和spring boot集成起来,因为项目不能autoconfigure,还有servlet也没有配置的地方。
这里我提供一个思路,实现 BeanFactoryPostProcessor接口 ,在postProcessBeanFactory 去创建servlet
Spring Boot集成
另外我提供一种比较简单的方法,直接使用开源集成,这里使用的是paypal开源的一个集成方案。
引入包
<dependency><groupId>com.paypal.springboot</groupId><artifactId>resteasy-spring-boot-starter</artifactId><version>2.3.0-RELEASE</version></dependency><!--PS,上面的那一堆包不用引了,这个就帮我们引入了-->
引入spring boot的一堆包
用法
指定servletMapping路径
写一个类继承Application,然后交给spring管理
@Component@ApplicationPath("/v1/")public class ApplicationPathImpl extends Application {}
编写restful接口啦
@Component@Path("province/")public class ExternalFacadeImpl implements ExternalFacade { /** * http://localhost:8080/v1/province/city/1 * @param id * @return */ @Path("city/{id}") @GET @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) @Override public Result<Boolean> getCity(@PathParam("id") Long id) { return new Result<>(); }}
下一篇将介绍常用注解作用
- Spring Boot 集成 resteasy篇 — jax-rs初步介绍和spring boot集成
- Spring Boot 集成 resteasy篇 — jax-rs常用注解介绍
- rabbitMQ和spring boot集成
- Spring Boot 集成MyBatis
- Spring Boot 集成Swagger
- Spring Boot 集成Mybatis
- Spring Boot 集成Swagger
- spring-boot集成mybatis
- Spring Boot 集成Swagger
- Spring Boot 集成Swagger2
- Spring Boot 集成 log4j2
- spring-boot集成shiro
- spring-boot集成Quartz
- Spring Boot集成Swagger2
- Spring boot集成Mybatis
- spring-boot集成MongoDB
- spring-boot集成ActiveMQ
- Spring Boot 集成Swagger
- 阿里菜鸟网络二面
- Unity图片优化神器
- 广播实时监听网络状态
- Java 集合源码解析(2):ListIterator
- app declares a dependency from configuration 'compile' to configuration 'default' which is not decla
- Spring Boot 集成 resteasy篇 — jax-rs初步介绍和spring boot集成
- Carbon Data 字典编码
- Flip Game POJ
- ??运算符
- Java中的Filter过滤器
- iOS ATS测试跳过无效证书
- jedis总结
- maven生成可以直接运行的jar(包括依赖和mainclass)
- 静态注册 ACTION_SCREEN_ON & ACTION_SCREEN_OFF 收不到