springboot 系统学习 1 -- 集成jersey
来源:互联网 发布:linux虚拟机文件共享 编辑:程序博客网 时间:2024/05/16 11:26
最近在学习springboot, 故写下这些文章来记录我的学习历程,本人菜鸟一只,如果有错误的地方,希望大家积极指正,
这篇文章主要是讲 springboot 如何继承jersey, 来时先mvc思想,当然 springboot 是支持controller 来写实现接口的设计,使用@RequestMapping, @RestController 这些注解
但是我还是觉得jersey 看起来更加优雅,然后易于维护和阅读
首先需要搭建一个spingboot项目, 项目地址
build 文件
subprojects { apply plugin: 'java' apply plugin: 'maven' group 'com.smaug' version '1.0-SNAPSHOT' targetCompatibility = 1.8 sourceCompatibility = 1.8 [compileJava, compileTestJava].each() { it.options.encoding = "UTF-8" } repositories { mavenLocal() maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } mavenCentral() } task sourcesJar(type: Jar, dependsOn: classes) { classifier = 'sources' from sourceSets.main.allSource } artifacts { archives sourcesJar } configurations.all { resolutionStrategy.cacheChangingModulesFor 1, 'minutes' } dependencies { compile('org.springframework.boot:spring-boot-starter:1.5.7.RELEASE') { exclude(module: 'spring-boot-starter-logging') } compile('org.slf4j:slf4j-api:1.7.25') compile('org.apache.logging.log4j:log4j-slf4j-impl:2.8.2') compile('org.apache.logging.log4j:log4j-core:2.8.2') compile('org.apache.logging.log4j:log4j-web:2.8.2') compile "org.springframework.boot:spring-boot-starter-jersey:1.5.1.RELEASE" compile 'mysql:mysql-connector-java:6.0.6' compile 'org.mybatis.generator:mybatis-generator-core:1.3.5' compile 'org.projectlombok:lombok:1.16.8' compile 'org.springframework:spring-core:4.2.5.RELEASE' compile 'org.springframework:spring-context-support:4.2.5.RELEASE' compile 'org.springframework:spring-beans:4.2.5.RELEASE' compile 'org.springframework:spring-oxm:4.2.5.RELEASE' compile "org.springframework:spring-jms:4.2.5.RELEASE" compile 'org.springframework.retry:spring-retry:1.1.2.RELEASE' compile 'org.springframework:spring-context:4.2.5.RELEASE' compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.8.9' compile 'com.alibaba:fastjson:1.2.38' //testCompile "junit:junit:4.12" testCompile 'org.springframework:spring-test:5.0.0.RELEASE' testCompile 'org.springframework.boot:spring-boot-starter-test:1.5.7.RELEASE' }}
创建一个smaug_cloud_api module 并写一个interface
package smaug.cloud.api.interfaces;import smaug.cloud.api.vos.test.TestResponse;import javax.ws.rs.*;import javax.ws.rs.core.MediaType;/** * Created by Allen on 17/10/10. */@Path("test")@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})@Produces({"application/json;charset=UTF-8", "text/xml;charset=UTF-8"})public interface TestService { @POST @Path("test") String test(); @POST @Path("getUser") TestResponse getUser();}
新建module smaug_cloud_service, 创建TestServiceImpl 用来实现 TestService
package smaug.cloud.provider.impl;import org.springframework.stereotype.Service;import smaug.cloud.api.interfaces.TestService;import smaug.cloud.api.vos.test.TestResponse;import smaug.cloud.common.utils.jsons.FastJsonUtil;import smaug.cloud.common.utils.jsons.JsonUtil;/** * Created by Allen on 17/10/10. */@Service("testServiceImpl")public class TestServiceImpl implements TestService { protected JsonUtil jsonUtil = new FastJsonUtil(); @Override public String test() { return "test"; } @Override public TestResponse getUser() { TestResponse response = new TestResponse(); response.setId(1); response.setName("13"); System.out.println(jsonUtil.toJson(response)); return response; }}
创建一个JerseyConfig类
package smaug.cloud.config.jerseryConfig;import org.glassfish.jersey.server.ResourceConfig;import org.glassfish.jersey.server.spring.scope.RequestContextFilter;/** * Created by Allen on 17/10/10. */public class AnnotationJerseyConfig extends ResourceConfig { public AnnotationJerseyConfig() { register(RequestContextFilter.class); packages("smaug.cloud.api.interfaces"); }}
在项目启动类里
package smaug.cloud.provider;import com.alibaba.fastjson.serializer.SerializerFeature;import com.alibaba.fastjson.support.config.FastJsonConfig;import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4;import org.glassfish.jersey.servlet.ServletContainer;import org.glassfish.jersey.servlet.ServletProperties;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;import org.springframework.boot.autoconfigure.web.HttpMessageConverters;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.http.converter.HttpMessageConverter;import smaug.cloud.config.jerseryConfig.AnnotationJerseyConfig;/** * Created by Allen on 17/10/10. */@SpringBootApplication@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})public class SmaugCloudApplication { public static void main(String[] args) { SpringApplication.run(SmaugCloudApplication.class, args); } @Bean public ServletRegistrationBean jerseyServlet() { ServletRegistrationBean registration = new ServletRegistrationBean(new ServletContainer(), "/*"); registration.addInitParameter(ServletProperties.JAXRS_APPLICATION_CLASS, AnnotationJerseyConfig.class.getName()); return registration; } @Bean public HttpMessageConverters fastJsonHttpMessageConverters() { FastJsonHttpMessageConverter4 converter = new FastJsonHttpMessageConverter4(); FastJsonConfig jsonConfig = new FastJsonConfig(); jsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); converter.setFastJsonConfig(jsonConfig); HttpMessageConverter<?> httpConverter = converter; return new HttpMessageConverters(httpConverter); }}
jerseyServlet 方法就是实现 jersey 的bean
此时运行启动即可
阅读全文
0 0
- springboot 系统学习 1 -- 集成jersey
- SpringBoot学习-支持Jersey
- springboot 系统学习5 集成 activemq
- SpringBoot 之 Jersey 集成示例代码(来自官网)
- SpringBoot集成Jersey时无法访问静态资源的解决方法
- jersey学习笔记3-集成服务
- Jersey+Spring+Hibernate集成学习记录
- springboot学习10之jersey+mybatis+通用mapper+分页PageHelper
- SpringBoot学习-Jersey自定义拦截路径的问题
- SpringBoot整合jersey
- SpringBoot整合jersey
- springboot笔记(1)springboot-swagger集成管理
- 【系统学习SpringBoot】springBoot 入门篇
- 【系统学习SpringBoot】springBoot整合Mybatis
- 【系统学习SpringBoot】springBoot +IDEA 热部署
- 【系统学习SpringBoot】SpringBoot自定义Filter
- 【系统学习SpringBoot】SpringBoot读取Property配置
- 【系统学习SpringBoot】SpringBoot定时任务详解
- 066: 不定积分重要类型之三角有理函数
- mongo数据库搭建
- Android弹簧动画
- 前端JSP与Spring MVC交互实用例子
- mysql之帮助使用
- springboot 系统学习 1 -- 集成jersey
- Objective-C的NSLog方法
- 论文阅读理解
- ImageView的scaleType详解
- 以V1中Inception Module为例说明1x1卷积核的作用
- 数据结构之循环队列
- Codeforces Round #393 (Div. 2)
- Collection和Collections的联系和区别(末尾还附上关于注解的知识链接)
- 聚合数据接口之菜单