【发布时间】: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 设置为
<scope>provided</scope>。我不知道不建议使用 JSP 页面。对不起
标签: java spring spring-mvc