You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成Hateoas部署WebLogic 12c启动失败问题

解决Spring Boot+HATEOAS部署WebLogic 12c启动失败的问题

这个问题我之前碰到过类似的情况,核心原因是Springfox(Swagger)和Spring HATEOAS都依赖了Spring Plugin库,两者启动时会创建多个PluginRegistry类型的Bean,而HATEOAS的HateoasConfiguration.linkDiscoverers()方法只需要一个匹配的Bean,Spring没法确定选哪个,直接导致ApplicationContext启动失败。另外你的POM里还有个隐藏坑:HATEOAS的版本和Spring Boot parent版本不匹配,这会让冲突更严重。

下面给你分步解决的方案:

1. 先修复HATEOAS依赖版本不兼容问题

你的Spring Boot parent用的是2.2.1.RELEASE,但手动指定了HATEOAS为1.2.2.RELEASE,版本不匹配会引发各种兼容性问题。先把HATEOAS的依赖改成继承parent版本:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-hateoas</artifactId>
    <!-- 删掉手动指定的version,让它用parent的2.2.1.RELEASE版本 -->
</dependency>

2. 排除Springfox中的Spring Plugin依赖

Springfox自带的Spring Plugin版本和HATEOAS的版本冲突,导致重复生成PluginRegistry Bean。修改Swagger的两个依赖,排除掉Spring Plugin相关的包:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.6.1</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.plugin</groupId>
            <artifactId>spring-plugin-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.springframework.plugin</groupId>
            <artifactId>spring-plugin-metadata</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.6.1</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.plugin</groupId>
            <artifactId>spring-plugin-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.springframework.plugin</groupId>
            <artifactId>spring-plugin-metadata</artifactId>
        </exclusion>
    </exclusions>
</dependency>

这样Springfox会直接使用HATEOAS带来的兼容版本的Spring Plugin,就不会再生成重复的Bean了。

3. 如果上述方法无效,试试自定义HATEOAS配置

要是排除依赖后还是有问题,你可以自己写个配置类,手动创建LinkDiscoverer的PluginRegistry并标记为@Primary,让Spring优先用这个Bean:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.hateoas.client.LinkDiscoverer;
import org.springframework.hateoas.mediatype.hal.HalLinkDiscoverer;
import org.springframework.hateoas.config.HateoasConfiguration;
import org.springframework.plugin.core.PluginRegistry;
import org.springframework.http.MediaType;

import java.util.ArrayList;
import java.util.List;

@Configuration
public class CustomHateoasConfig extends HateoasConfiguration {

    @Bean
    @Primary
    public PluginRegistry<LinkDiscoverer, MediaType> linkDiscoverers() {
        List<LinkDiscoverer> discoverers = new ArrayList<>();
        // 这里先加HAL格式的链接发现器,你要是需要其他格式可以再加
        discoverers.add(new HalLinkDiscoverer());
        return PluginRegistry.of(discoverers);
    }
}

4. 最后验证部署

修改完之后重新打包项目,部署到WebLogic 12c。要是还是启动失败,记得清理WebLogic的临时缓存(删掉domain目录下的tmp和cache文件夹),再重新部署试试。

内容的提问来源于stack exchange,提问作者abhishek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 09:42:31