java camel swagger,java – CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES没有反映在swagger.json中

我正在使用Jersey,Jax-rs和swagger(

Spring for injection).我的对象有一些成员和嵌入对象,其名称由多个单词组成,在代码中我使用camelCase.

我定义了一个解析器,因此按照标准惯例将它们作为下划线发出.问题是,招摇是显然没有拿起这个解析器,所以对象仍然在swagger json中显示为camelCase.

以下是我具体配置的一些细节:

我的pom.xml的片段:

4.2.3.RELEASE

2.22.1

……

javax.servlet

javax.servlet-api

3.1.0

org.glassfish.jersey.containers

jersey-container-servlet

${glassfish.jersey.version}

org.glassfish.jersey.core

jersey-server

${glassfish.jersey.version}

org.glassfish.jersey.core

jersey-client

${glassfish.jersey.version}

org.glassfish.jersey.media

jersey-media-json-jackson

${glassfish.jersey.version}

io.swagger

swagger-jersey2-jaxrs

1.5.0

…..

我只使用注释,所以我的web.xml是空的,我有一个AppInitializer类. Swagger servlet在类中初始化

public class AppInitializer implements WebApplicationInitializer {

public void onStartup(ServletContext container) throws ServletException {

AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();

ctx.register(MongoDbConfig.class);

ctx.register(CORSResponseFilter.class);

ctx.setServletContext(container);

container.addListener(new ContextLoaderListener(ctx));

container.addListener(new RequestContextListener());

ServletRegistration.Dynamic servlet = container.addServlet("jersey-servlet",

new org.glassfish.jersey.servlet.ServletContainer());

servlet.setInitParameter("jersey.config.server.provider.packages", "io.swagger.jaxrs.listing,com.my.server.config,com.my.server.resource");

servlet.setLoadOnStartup(1);

servlet.addMapping("/api/*");

ServletRegistration.Dynamic swagger = container.addServlet("SwaggerServlet",

new io.swagger.jersey.config.JerseyJaxrsConfig());

swagger.setInitParameter("api.version", "1.0.0");

swagger.setInitParameter("swagger.api.basepath", container.getContextPath()+"/api");

swagger.setLoadOnStartup(2);

}

}

这是我的主要模型:

import java.io.Serializable;

import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import com.fasterxml.jackson.annotation.JsonInclude;

import io.swagger.annotations.ApiModel;

/**

* @author Tamar Rosen

*

*/

@JsonIgnoreProperties(ignoreUnknown = true)

@JsonInclude(JsonInclude.Include.NON_EMPTY)

@ApiModel

public class Property implements Serializable{

/**

*

*/

private static final long serialVersionUID = 1L;

private String id;

@NotNull

private String name;

@NotNull

private String description;

private PropertyDetails propertyDetails;

private int monthlyTax;

private String schemaUrl;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getDescription() {

return description;

}

public void setDescription(String description) {

this.description = description;

}

public PropertyDetails getPropertyDetails() {

return propertyDetails;

}

public void setPropertyDetails(PropertyDetails propertyDetails) {

this.propertyDetails = propertyDetails;

}

public int getMonthlyTax() {

return monthlyTax;

}

public void setMonthlyTax(int monthlyTax) {

this.monthlyTax = monthlyTax;

}

public String getSchemaUrl() {

return schemaUrl;

}

public void setSchemaUrl(String schemaUrl) {

this.schemaUrl = schemaUrl;

}

}

在ContextResolver类中设置CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES.这样可以正常工作,除非它没有反映在由swagger生成的doc中.

以下是ContextResolver实现:

import javax.ws.rs.ext.ContextResolver;

import javax.ws.rs.ext.Provider;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.databind.PropertyNamingStrategy;

@Provider

public class ObjectMapperContextResolver implements ContextResolver {

private final ObjectMapper mapper;

public ObjectMapperContextResolver() {

mapper = new ObjectMapper();

mapper.setPropertyNamingStrategy(

PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES

);

}

public ObjectMapper getContext(Class> type) {

return mapper;

}

}

我怀疑问题是swagger servlet没有看到Context解析器,但我不知道如何解决这个问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言的输入输出语句有哪些?

c语言的输入输出语句有:“getchar(void);”和“putchar(int c);”、“scanf("格式控制字符串",地址列表);”和“printf("格式控制字符串",输出列表);”、“gets()”和“puts()”等等。一:控制台输入输出(1)字符数据的输入/输出字符输…

primefaces_PrimeFaces:在动态生成的对话框中打开外部页面

primefaces我已经在即将出版的PrimeFaces Cookbook版本2中写过一篇食谱的博客。 在这篇文章中,我想发表第二篇关于一个名为Dialog Framework的小型框架的文章。 我个人喜欢它,因为我记得我为使用Struts框架付出同样的代价。 当您想将外部页面加载到弹出窗…

c语言源文件经过编译后生成文件的后缀是什么?

c语言源文件经过编译后,生成文件的后缀是“.obj”。C语言源文件后缀名是“.c”,编译生成的文件后缀名是“.obj”,连接后可执行文件的后缀名是“.exe”。C语言创建程序的步骤:编辑:就是创建和修改C程序的源代码-我们编写…

php 去掉nbsp,php 正则去掉pnbsp;/p 空格 nbsp;

$strFactory Supply High Quality Maitake Mushroom Extract Powder Bulk$uuupreg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/","",$str);echo str_replace(很完美php的str_replace函数怎么把php的str_replace函数怎么把$html"fdasf";echo $stri…

java编译器jdk版本_以编程方式确定Java类的JDK编译版本

java编译器jdk版本当需要确定使用哪个JDK版本来编译特定的Java .class文件时, 通常使用的方法是使用javap并在javap输出中查找列出的“主要版本”。 我在我的博客文章Autoboxing,Unboxing和NoSuchMethodError中引用了这种方法,但是在继续以编…

c语言指针用法有哪些

c语言指针用法:一,指针定义:指针变量的取值范围取值0~4G,是一种数据类型(无符号整数,代表了内存编号)。它可以用来定义变量(与int、long一样),与int、long不同的它存储整…

java转换汇编,请问如何把JAVA程序转为汇编?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼import java.util.Scanner;public class Lab1 {public static void main(String arg[]){int a,i,j,n;boolean flagtrue;Scanner inputnew Scanner (System.in);System.out.printf("Enter an integer that is greater than 1:&…

ogm session_带有Hibernate OGM的NoSQL –第一部分:持久化您的第一个实体

ogm sessionHibernate OGM的第一个最终版本已经发布 ,团队从发布狂潮中恢复了一些。 因此,他们考虑开设一系列教程风格的博客,使您有机会轻松地从Hibernate OGM重新开始。 感谢Gunnar Morling( gunnarmorling )创建了本…

php array assoc,如何学习PHP array_intersect_assoc()

如何学习PHP array_intersect_assoc()定义和用法array_intersect_assoc() 函数返回两个或多个数组的交集数组。与 array_intersect() 函数 不同的是,本函数除了比较键值,还比较键名。返回的数组中元素的键名保持不变。语法array_intersect_assoc(array1,…

c语言volatile关键字的作用是什么?

一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执…

jaxb解析字符串xml_一个JAXB Nuance:字符串与枚举(受限制的XSD字符串)的枚举

jaxb解析字符串xml尽管用于XML绑定的Java体系结构 ( JAXB )在名义情况下(尤其是自Java SE 6以来) 相当容易使用,但它也存在许多细微差别。 一些常见的细微差别是由于无法将 XML架构定义 (XSD)类…

php伪静态后不能访问html,php伪静态后html不能访问怎么办

php伪静态后html不能访问的解决办法:首先判断文件是否存在;然后设置存在则不rewirte,不存在且符合规则才rewrite;最后修改htaccess文件即可。推荐:《PHP视频教程》具体问题:PHP伪静态后不能访问纯html文件.…

c语言中,char型数据是以什么形式存储的?

C语言 字符型(char)简介字符型(char)用于储存字符(character),如英文字母或标点。严格来说,char 其实也是整数类型(integer type),因为char 类型储…

声明式编程与函数式编程_实用程序类与函数式编程无关

声明式编程与函数式编程最近,我被指控反对函数式编程,因为我将实用程序类称为反模式 。 绝对是错的! 好吧,我确实认为它们是一个糟糕的反模式,但是它们与函数式编程无关。 我相信有两个基本原因。 首先,函数…

java 多线程的单例模式,Java多线程中的单例模式两种实现方式

Java多线程中的单例模式一、在多线程环境下创建单例方式一:package com.ietree.multithread.sync;public class Singletion {private static class InnerSingletion {private static Singletion single new Singletion();}public static Singletion getInstance() …

C语言中位运算符有哪些

C语言中位运算符有:位操作是程序设计中对位模式按位或二进制数的一元和二元操作。在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。在现代架构中, 情况并非如此:位运算的运算速度通常…

jsf表单验证_JSF:在正确的阶段进行验证(了解生命周期)

jsf表单验证嗨,大家好! 尽管标题强调验证一词,但本文实际上是关于JSF生命周期的。 那是因为我相信,真正了解生命周期的最简单方法之一就是通过做出我们一直在做的事情:验证用户输入。 通常,了解所谓的JSF…

java广度优先爬虫示例,【爬虫】广度优先遍历抓取数据概述

这次都是一些纯语言的表达,可能会有点啰嗦,或者有点枯燥,也是对爬虫的一些小小的见解,可能只是一些常见话,哈哈,还是耐心的写完。网络爬虫的整体执行流程:1)确定一个(多个)种子网页2)进行数据内…

if语句的用法是什么

if语句的用法:if语句是指编程语言(包括c语言、C#、VB、java、汇编语言等)中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。if语句概述if语句是指编程语言(包…

gradle创建web工程_Gradle入门:创建Web应用程序项目

gradle创建web工程这篇博客文章描述了如何使用Gradle创建一个Web应用程序项目。 更具体地说,我们想创建一个使用Java的Web应用程序项目,将我们的Web应用程序打包到WAR文件中,并在开发环境中运行我们的Web应用程序。 让我们找出如何满足这些…