【问题标题】:How to configure spring datasource programmatically in web based app which uses JdbcTemplate and SpringDaoSupport?如何在使用 JdbcTemplate 和 SpringDaoSupport 的基于 Web 的应用程序中以编程方式配置 spring 数据源?
【发布时间】:2014-06-11 10:58:20
【问题描述】:

我正在尝试创建一个使用 JdbcTemplate 和 SpringDaoSupport 的 Spring Web 应用程序。当我通过 dispatcher-servlet xml 定义数据源 bean 时,它工作正常。即

<bean id="dataSource" 
  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
  <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
  <property name="username" value="system"/>
  <property name="password" value="password1$"/>
</bean>             

但是每当我尝试通过程序配置dataSource bean时,它就会出现异常。配置如下:

在代码中:

@Configuration
public class AppConfig {

    @Bean
    public DriverManagerDataSource dataSource() {
        DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
        driverManagerDataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
        driverManagerDataSource.setUrl("jdbc:oracle:thin:@localhost:1521:XE");
        driverManagerDataSource.setUsername("username");
        driverManagerDataSource.setPassword("password");
        return driverManagerDataSource;
    }   
}

在 XML 中:

<bean id="dataSource" class="com.example.AppConfig" />    

【问题讨论】:

  • 请添加您的异常堆栈跟踪。
  • 这个以dataSource 为 id 的 AppConfig 是什么?看起来你在这里混合了两个概念。您的配置类不需要有 id,因为这只是 bean 配置的容器。在您的 java 代码中,默认情况下,bean 将使用方法的名称公开(正如您所期望的那样,dataSource

标签: spring spring-mvc datasource jdbctemplate


【解决方案1】:

在您的dispatcher-servlet.xml 中,您需要确保您有:

<context:annotation-config/>

<bean class="com.example.AppConfig" />

<context:component-scan base-package="com.example"/>

【讨论】:

  • java.lang.IllegalStateException:无法加载配置类:com.example.AppConfig;原因:java.lang.NoClassDefFoundError:org/objectweb/asm/Type
  • :-) 当然,第二个例外是显而易见的。您被要求提供堆栈跟踪,而我的回答仅基于您在问题中提供的内容,没有指定堆栈跟踪或异常:-)。
猜你喜欢
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 2013-05-22
  • 1970-01-01
相关资源
最近更新 更多