我想利用XML配置文件中的一些Spring Boot自动配置的bean,但是当我尝试这样做时,我仍然遇到异常和错误.
例如,如果我的类路径上有数据相关的库,Spring Boot将自动配置一个DataSource对象,我可以将其自动装入我自己的bean和类中,如下所示:
@Configuration
@ImportResource("classpath:xmlconfig.xml")
public class Config {
// This works!!
@Autowired
private DataSource dataSource;
@Bean
public ClassThatRequiresADataSource() {
ClassThatRequiresADataSource foo = new ClassThatRequiresADataSource();
foo.setDataSource(dataSource);
return foo;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试在XML配置文件中执行相同操作,我将得到一个例外.我已经通过添加@ImportResource("classpath:xmlconfig.xml")到我的主配置类来引导XML配置文件.这是我正在谈论的一个例子......内部xmlconfig.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- THIS DOES NOT WORK! -->
<bean id="anotherClassThatRequiresADataSource" class="my.package.AnotherClassThatRequiresADataSource">
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
Run Code Online (Sandbox Code Playgroud)
尽管dataSource是一个有效的,自动配置的Bean名称,上面将在运行Spring Boot应用程序时给出异常.我也尝试过自动配置ConnectionFactory(在类路径上使用ActiveMQ)和类路径上EntityManagerFactory使用Hibernate和JPA,但这些都不起作用.
基本上,我要问的是:什么相当于将Spring Boot自动配置的bean自动装配到XML配置文件中?
这是我的主要Spring Boot入口点,只是所有文档中列出的标准类:
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
public …Run Code Online (Sandbox Code Playgroud)