Jos*_*ver 11 java enunciate swagger swagger-ui
我正在使用enunciate生成REST API的Swagger文档.我的一个遗留bean包含一个Map,Swagger抱怨这个:
[INFO] --- maven-enunciate-plugin:1.27:docs (default) @ foo-api ---
[INFO] initializing enunciate.
[INFO] invoking enunciate:generate step...
[WARNING] Validation result has errors.
/.../rest/BarBean.java:170: [swagger] Swagger isn't smart enough to handle anonymous types (such as maps).
public HashMap<String, BazBean> getBazBeans() {
Run Code Online (Sandbox Code Playgroud)
是否有任何注释我可以放入bean类中,以便Swagger可以处理这个?
除此之外,有没有办法让Swagger简单地忽略这个领域或全班?我知道Swagger在没有@XmlRootElement注释的情况下忽略了类,但是BazBean在另一个接受XML的端点中不幸地使用了它.
小智 2
我可以想到两种方法来解决这个问题:
BarBean从您声明的 Maven 配置中排除遗留类@XmlJavaTypeAdapter为BarBean#getBazBeans()方法添加注解我将更详细地描述第二个解决方案,因为第一个解决方案是众所周知的。的返回类型getBazBeans()是匿名类型,这意味着它没有在您的项目中声明。您可以使用 an 更改此设置,通过注释javax.xml.bind.annotation.adapters.XmlAdapter将其连接到getBazBeans()方法返回类型javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter
import import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
public class BarBean {
@XmlJavaTypeAdapter( BazBeansAdapter.class )
Map<String, BazBean> getBazBeans() { /* ... */ }
}
public class BazBeansAdapter extends XmlAdapter<BazBeansContainer, Map<String, BayBean>> {
/*
Your implementation of serialization and deserialization.
Usually creating and reading the container object.
*/
}
public class BazBeansContainer {
private Map<String, BayBean> beans;
/* Getter, Setter, etc. */
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1144 次 |
| 最近记录: |