Java 在SpringBoot组件中使用依赖XML bean
我有一个Java 在SpringBoot组件中使用依赖XML bean,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个SpringBoot应用程序,它使用@Component注释来创建bean,而不是旧的基于XML的applicationContext文件 我需要使用一个使用基于XML的bean的库。我需要这些bean在我的应用程序中初始化并可用,否则我将重写相当多的代码 我尝试使用查找它们,但正如预期的那样,由于没有使用注释对类进行注释,因此查找不起作用。 如前所述,我试过使用,但运气不佳 所以问题是,当我的应用程序不使用XMLapplicationContext文件时,如何在jar依赖项中实例化be
SpringBoot
应用程序,它使用@Component
注释来创建bean,而不是旧的基于XML的applicationContext
文件
我需要使用一个使用基于XML的bean的库。我需要这些bean在我的应用程序中初始化并可用,否则我将重写相当多的代码
我尝试使用查找它们,但正如预期的那样,由于没有使用注释对类进行注释,因此查找不起作用。
如前所述,我试过使用,但运气不佳
所以问题是,当我的应用程序不使用XMLapplicationContext
文件时,如何在jar依赖项中实例化bean(这些依赖项是以XML样式定义的?
注意:
我需要导入的库非常旧,让它使用组件注释的可能性几乎为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);
}
}
您可以让Spring引导组件扫描直接在其包中查找这些JAR,如下所示:
@ComponentScan(basePackages = {"org.thirdparty.thirdpartyjar"})
是一个我认为与您的问题/答案类似的问题/答案。我认为您应该使用以Springbeans的形式加载JAR文件中的类。您可能需要正确地计算bean的依赖项,并将它们作为属性添加到主bean中。否则,可能会出现一些运行时异常
示例代码:-
ApplicationContext context
= new ClassPathXmlApplicationContext(
"classpathxmlapplicationcontext-example.xml");
BeanClassName bean = context.getBean("beanName", BeanClassName.class);
正如我在问题中提到的,我已经尝试过这个方法,但它不起作用,因为库类没有用@Component注释,所以找不到它们。那么除了声明它们的应用程序上下文XML并从中获取bean之外,可能没有其他选择了。是的,我的错,一开始没有仔细阅读你的问题:)+1这确实有效,但正如你所提到的,没有找到属性,这样做需要大量的工作。因此,我暂时不会接受这个答案,以防万一有人提及一些更好的解决办法。可能会重复。我认为这是权威性的回答,不是吗?