创建applicationcontext.xml中定义的bean时出错

zpf6vheq  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(315)

我正在将spring(v.4.3.2)应用程序从tomcat7移植到tomcat9。我正在windows box上运行tomcat作为服务。在applicationcontext.xml中,我定义了几个bean配置文件,并且在配置文件之外还有bean定义:

<bean id="transactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="utilsDS" />
</bean>

.............
....

<bean id="utilsDS" destroy-method="close"
        class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
    </bean>

....

</beans>

启动tomcat时,我传递了一个jvm选项:
-dspring.profiles.active='uat'
Tomcat7可以很好地启动我的应用程序,我能够运行它。然而,对于Tomcat9,我得到了一个错误

org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
    org.springframework.beans.factory.BeanCreationException:

创建在servletcontext资源[/web inf/config/applicationcontext.xml]中定义的名为“transactionmanager”的bean时出错:设置bean属性“datasource”时无法解析对bean“utilsds”的引用;嵌套异常为org.springframework.beans.factory.nosuchbeandefinitionexception:未定义名为“utilsds”的bean
Tomcat7和9上的“applicationcontext.xml”是相同的,因为我使用了相同的war来部署应用程序。我不确定我错过了什么。在我看来,tomcat9的配置中有一些东西可以解决引用问题。我不知道是什么。

wvt8vs2t

wvt8vs2t1#

我将context param添加到应用程序“web.xml”中,它可以工作:

<context-param>
 <param-name>spring.profiles.active</param-name>
 <param-value>dev</param-value>
</context-param>

仍然不确定为什么要传递jvm选项:
-dspring.profiles.active=dev
没用

相关问题