在Spring Boot组件中使用依赖XML Bean

问题描述 投票:-1回答:2

我有一个SpringBoot应用程序,它使用@Component注释创建bean而不是旧的基于XML的applicationContext文件。

我需要使用一个使用基于XML的bean的库。我需要在我的应用程序中初始化并提供这些bean,否则我最终会重写相当多的代码。

我已经尝试使用@ComponentScan来找到它们,因为这些类没有用@Component注释,因此预期不起作用。我尝试过使用@ImportResource,如here所述,但没有运气。

所以问题是,如何在jar依赖项中实例化bean,这些bean是以XML样式定义的,而我的应用程序不使用XML applicationContext文件,然后在我的应用程序中使用它们?

注意:

我需要导入的库很老,并且使用组件注释的机会几乎为0.无论我改变什么都必须在我的项目中。

我知道开始使用applicationContexts可能会有效,但我真的想摆脱基于XML的bean。


这是SpringBootApplication类,以防它可能有用:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.web.support.SpringBootServletInitializer;

@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyApp extends SpringBootServletInitializer {
    public static void main(final String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}
java spring spring-boot
2个回答
1
投票

我认为你应该使用ClassPathXmlApplicationContext将JAR文件中存在的类作为Spring bean加载。您可能需要正确地训练bean的依赖关系并将它们作为属性添加到主bean。否则,您可能会遇到一些运行时异常。

示例代码: -

ApplicationContext context 
      = new ClassPathXmlApplicationContext(
        "classpathxmlapplicationcontext-example.xml");

BeanClassName bean = context.getBean("beanName", BeanClassName.class);

0
投票

您可以告诉Spring Boot组件扫描直接在其包中查找这些JAR,如下所示:

@ComponentScan(basePackages = {"org.thirdparty.thirdpartyjar"})

This是一个问题/答案我相信与你的相似。

© www.soinside.com 2019 - 2024. All rights reserved.