【问题标题】:Mixing Java Config and XML Spring 4混合 Java 配置和 XML Spring 4
【发布时间】:2016-04-01 20:30:51
【问题描述】:

我在多个 Java 类中定义了一些配置,在 XML 中定义了一些基本配置。例如 dataSource 是在 XML 中定义的,并且在 Java @Configuration 类中定义了一个 JDBCTemplate。

根据在线提供的答案,我必须使用 @importResource 来包含我的 XML,以便我可以 Autowire 来自 XML 的 bean 定义。但是,这似乎对我不起作用。这是我的定义:

mvc-dispatcher-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>

1 个 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.

当我调试它时,即使在自动装配之后数据源也是空的。我尝试了一堆在线解决方案,但似乎没有一个适合我。

关于如何使 Java 配置类自动装配 XML 中定义的 bean 有什么想法吗?我可能有任何其他不利于它的设置?

【问题讨论】:

  • 完全跑题了,但你可能对 springboot 项目感兴趣,它封装了 Spring 以摆脱所有糟糕的 xml 配置
  • Springboot 不支持 WAR 打包,不建议与网站中的 JSP 页面显示一起使用。它更适合不显示/渲染网页的服务项目。
  • 您可以使用 springboot 部署为 war,但您必须确保将嵌入式 tomcat 设置为&lt;scope&gt;provided&lt;/scope&gt;。我不知道不建议使用 JSP 页面。对不起

标签: java spring spring-mvc


【解决方案1】:

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

@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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2015-08-12
    • 2011-10-05
    • 2015-11-19
    相关资源
    最近更新 更多