jaxb和继承的问题(在非springboot版本中工作)

3vpjnl9f  于 2021-07-14  发布在  Java
关注(0)|答案(0)|浏览(141)

我有一个现有的基于spring的项目(使用jaxb),它设置了javax.ws.rs rest端点,可以很好地工作(使用jersey实现)。我将这个项目移到了spring启动版本,就好像在基类中依赖@seealsh不再工作一样。
(注意最初我想在这里使用一个抽象类,它在现有的项目中工作得很好,但是在这个spring启动版本中出现了问题,所以删除它只是为了测试)

@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso({StandardSpecGenExternalInfo.class})
public class SpecGenExternalInfo extends BaseEnterpriseVO {
    public SpecGenExternalInfo() {
    }
}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "standardSpecGenExternalInfo")
public class StandardSpecGenExternalInfo extends SpecGenExternalInfo  {.. }

然后在类(specgenrequest)中发送standardspecgenexternalinfo的示例,该类以基类为arg(setexternalinfo(specgenexternalinfo)

SpecGenRequest specGenRequest  = new SpecGenRequest(); 
StandardSpecGenExternalInfo standardExternalInfo =  new StandardSpecGenExternalInfo();
specGenRequest.setExternalInfo(standardExternalInfo);

对于示例检查,以下端点将返回“false”:

@RequestMapping(value = "/postTest", consumes = MediaType.APPLICATION_XML_VALUE, produces = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<SpecGenResponse> postTest(@RequestBody SpecGenRequest request) throws Exception {
    logger.info("instance of {}", request.getExternalInfo() instanceof StandardSpecGenExternalInfo);

我在pom.xml中尝试过这个,也尝试过没有

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
</dependency>

这是令人沮丧的,因为当我将这个项目设置为常规的springmvc项目并使用jersey作为端点时,它工作得很好。非常感谢您的帮助。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题