在SpringBoot组件中使用依赖XML Bean

时间:2018-03-14 13:57:24

标签: java spring spring-boot

我有一个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);
    }
}

2 个答案:

答案 0 :(得分:1)

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

示例代码: -

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

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

答案 1 :(得分:0)

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

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

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