混合Java Config和XML Spring 4

时间:2015-12-27 23:22:02

标签: java spring spring-mvc

我已经在多个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的任何想法?我可能有的任何其他设置都在反对吗?

1 个答案:

答案 0 :(得分:0)

导入语法是否正确(请注意*和文件的路径)?

@ImportResource("classpath*:mvc-dispatcher-servlet.xml")

在过去,我必须做到以下几点:

@ImportResource("classpath:com/somepackages.../mvc-dispatcher-servlet.xml")

参考:http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-java-combining