我有一个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);
}
}
答案 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是一个我认为与你的相似的问题/答案。