我已经在多个Java类中定义了一些配置,并在XML中定义了一些基本配置。例如,dataSource是用XML定义的,我在Java @Configuration
类中定义了一个JDBCTemplate。
根据在线提供的答案,我必须使用@importResource
来包含我的XML,以便我可以Autowire
来自XML的bean定义。但是,这对我来说似乎不起作用。以下是我的定义:
MVC-调度-servlet.xml中:
<context:component-scan base-package="com.abc.mvc"/>
<context:property-placeholder location="classpath*:application.properties"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="connectionProperties">
<props merge="default">
<prop key="MinLimit">3</prop>
<prop key="MaxLimit">20</prop>
</props>
</property>
</bean>
Java Config类中的一个:
@Configuration
@ImportResource("classpath*:mvc-dispatcher-servlet.xml")
public class MainConfig {
@Autowired
private DataSource dataSource;
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource);
}
而且,我的web.xml:
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
当我使用此设置运行时,我收到错误
property "dataSource" must be provided
。
当我调试它时,即使在自动装配之后,dataSource也为空。我尝试了一堆在线解决方案,但似乎没有一个适合我。
关于如何使Java配置类自动装配XML中定义的bean的任何想法?我可能有的任何其他设置都在反对吗?
答案 0 :(得分:0)
导入语法是否正确(请注意*和文件的路径)?
@ImportResource("classpath*:mvc-dispatcher-servlet.xml")
在过去,我必须做到以下几点:
@ImportResource("classpath:com/somepackages.../mvc-dispatcher-servlet.xml")