【问题标题】:How to use class which is not a dependency in my spring boot project如何在我的 Spring Boot 项目中使用不是依赖项的类
【发布时间】:2018-05-22 07:58:01
【问题描述】:

在我的 spring 项目中,我可以像这样在 XML 中定义 bean:

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
    <property name="messageFactory">
        <bean class="weblogic.xml.saaj.MessageFactoryImpl" />
    </property>
</bean>

甚至我的项目也不包含weblogic.xml.saaj.MessageFactoryImpl 类。当我将我的应用程序部署到 wls 服务器时,一切正常,只是 STS 抱怨它不知道这个类。如何将此代码转换为 spring-boot 应用程序并在某个 java 类中定义这个工厂?

【问题讨论】:

    标签: java spring spring-boot


    【解决方案1】:

    在一个配置类中(有@Configuration 上面的类定义)为你的MessageFactoryImpl 创建一个方法作为工厂,并在它上面使用@Bean。在 spring boot 中定义一个 bean 就像旧的 java 配置一样。

    This question,会有所帮助

    【讨论】:

    • 当我在 java 类中使用 weblogic.xml.saaj.MessageFactoryImpl() 时我无法编译它
    【解决方案2】:

    weblogic.xml.saaj.MessageFactoryImpl 是一个已经存在于 WebLogic 服务器库 jar 中的实现类。

    要使用@Bean,请使用@ConditionOnClass

    @Bean
    @Primary
    @ConditionalOnClass(weblogic.xml.saaj.MessageFactoryImpl.class)
    public SoapMessageFactory messageFactory() {
        return new weblogic.xml.saaj.MessageFactoryImpl();
    }
    

    【讨论】:

    • 是的,但我的项目中不依赖 wls,所以当我添加它时,我无法编译它
    • 您添加 jar 依赖项并将其范围设置为 compileOnly(在 Gradle 中)
    • 我不确定 wls jar 是否有 maven 依赖
    • 是的,它使用maven.oracle.com repository,我想这个罐子是weblogic:com.bea.core.weblogic.saaj。顺便说一句,你可以在你的 weblogic 服务器中找到这个 jar(weblogic.jar 或类似的东西)。
    猜你喜欢
    • 2020-09-22
    • 2017-05-17
    • 2021-10-04
    • 1970-01-01
    • 2019-07-28
    • 2019-03-14
    • 1970-01-01
    • 2021-04-05
    • 2016-06-29
    相关资源
    最近更新 更多