日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/2 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java camel swagger,java – CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES没有反映在swagger.json中 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

Spring for injection).我的對(duì)象有一些成員和嵌入對(duì)象,其名稱由多個(gè)單詞組成,在代碼中我使用camelCase.

我定義了一個(gè)解析器,因此按照標(biāo)準(zhǔn)慣例將它們作為下劃線發(fā)出.問題是,招搖是顯然沒有拿起這個(gè)解析器,所以對(duì)象仍然在swagger json中顯示為camelCase.

以下是我具體配置的一些細(xì)節(jié):

我的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是空的,我有一個(gè)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類中設(shè)置CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES.這樣可以正常工作,除非它沒有反映在由swagger生成的doc中.

以下是ContextResolver實(shí)現(xiàn):

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解析器,但我不知道如何解決這個(gè)問題

總結(jié)

以上是生活随笔為你收集整理的java camel swagger,java – CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES没有反映在swagger.json中的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。