spring使用DataSoure注入参数时报No supported DataSource type found

    平常阅读源码什么的没有目的性,所以很少去看什么源码,主要是比较绕看起来吃力,所以一般工作只是找个模版模仿一下。

以上废话,割————————————————————————————————————————————————————————————

    最近照常模仿使用了其它项目里的DataSource用法,代码如下:

    

 1    @Bean
 2     @Primary
 3     @ConfigurationProperties(prefix = "datasource.from")
 4     public DataSource dataSource(){
 5         return DataSourceBuilder.create().build();
 6     }
 7
 8     @Autowired
 9     @Qualifier("dataSource")
10     private DataSource dataSource;
11
12     @Bean(name="sqlSessionFactory")
13     public SqlSessionFactory sqlSessionFactory() throws Exception {
14         SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
15         bean.setDataSource(dataSource);
16         bean.setConfigLocation(new ClassPathResource("MybatisConfig.xml"));
17         return bean.getObject();
18     }

    在运行初始化的时候报“No supported DataSource type found”,查找网上资料又说没有指定数据库类型的。

    于是,自己在配置中增加了datasource.from.type=oracle,运行还是报一样的错。于是,到晚上脑子清醒点时,看了下DataSource初始化时的部分源码。

    主要的是第三段代码如下:

1 private static final String[] DATA_SOURCE_TYPE_NAMES = { "org.apache.tomcat.jdbc.pool.DataSource", "com.zaxxer.hikari.HikariDataSource", "org.apache.commons.dbcp.BasicDataSource", "org.apache.commons.dbcp2.BasicDataSource" };
public Class<? extends DataSource> findType(){
    if (this.type != null) {
        return this.type;
    }
    for (String name : DATA_SOURCE_TYPE_NAMES) {
    try {
        return ClassUtils.forName(name, this.classLoader);
    }catch (Exception ex) {}
1  private Class<? extends DataSource> getType() {
2       Class<? extends DataSource> type = findType();
3       if (type != null) {
4         return type;
5       }
6       throw new IllegalStateException("No supported DataSource type found");
7     }
1 public DataSource build() {
2      Class<? extends DataSource> type = getType();
3      DataSource result = (DataSource)BeanUtils.instantiate(type);
4      maybeGetDriverClassName();
5      bind(result);
6      return result;
7    }

    看完上面的代码就明白为什么报错了,就是说在创建DataSource没有找到javax.sql.DataSource的子类,也就是必须要引入DATA_SOURCE_TYPE_NAMES枚举中涉及类的jar包,另外注意引入对应数据库JDBC的jar包。

以上,Good lucky!

时间: 2024-10-07 19:45:29

spring使用DataSoure注入参数时报No supported DataSource type found的相关文章

关于Spring注入参数到static静态参数失败问题处理。解决Autowired annotation is not supported on static fields的问题

直接贴代码 把注入参数的注解加到set方法上面去即可. 因为这是一个工具类用到的config,所以一开始没有加@Component,还是依然为空,加上之后就正常能注入了 原文地址:https://www.cnblogs.com/KAI0725/p/11328864.html

Spring属性注入、构造方法注入、工厂注入以及注入参数(转)

Spring 是一个开源框架. Spring 为简化企业级应用开发而生(对比EJB2.0来说). 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.Spring 是一个 IOC(DI) 和 AOP 容器框架. 具体描述 Spring:轻量级:Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API控制反转(依赖注入) (IOC----inverse of control .DI --- dependenc

spring mvc 3.1的自动注入参数遇到的问题

在网上下载了xheditor作为页面的编辑器,编辑内容后post到后台保存,后台方法用spring mvc的自动注入的方式接收参数. 这种方式在各个浏览器下运行良好,但是在ie11下发现,从word.文本编辑器或者其它编辑器复制内容到xheditor后,这时提交到后台的参数不能被接收到. 仔细排查下发现ie11下复制到xheditor的内容都被默默的加了一段无用的div: <div style="top: 0px;"> </div> 此时用最原始的接收参数的方式

使用Spring MVC 的 @RequestBody 映射json请求参数时报异常问题

使用Spring MVC 的 @RequestBody 映射json请求参数时报"The request sent by the client was syntactically incorrect."异常解决方案 最近工作中开发RESTful接口需要处理客户端上传的json,图方便想起Spring的Controller中有@RequestBody可以优雅地完成json报文与Java类的映射,但是使用时碰到了 "The request sent by the client w

spring中Bean的注入参数详解

字面值    一般指可用字符串表示的值,这些值可以通过<value>元素标签进行注入.在默认情况下,基本数据类型及其封装类.String等类型都可以采取字面值注入的方式,Spring容器在内部为字面值提供了编辑器,它可以将以字符串表示的字面值转换为内部变量的相应类型.    配置信息:    <bean id="car" class="com.luxl.domain.Car">        <property name="m

Spring 依赖注入(二、注入参数)

注入参数基本分7类: 1.基本类型值 2.注入bean 3.内部bean 4.注入null值 5.级联属性 6.List,Set,Map集合的注入 7.properties文件的注入(和集合注入基本是一样的) 下面就是实体类People2,beans.xml的源码 package com.maya.model; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.u

Spring 依赖注入(二、注入参数)

注入参数基本分7类: 1.基本类型值 2.注入bean 3.内部bean 4.注入null值 5.级联属性 6.List,Set,Map集合的注入 7.properties文件的注入(和集合注入基本是一样的) 下面就是实体类People2,beans.xml的源码 package com.maya.model; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.u

【Spring】Construcotrer注入和setter注入不同的XML写法方式

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文主要讲解了Spring中constructor注入的4种不同写法和sette的3种不同写法 一.constructor注入4种不同写法 通过构造方法注入,就相当于给构造方法的参数传值set注入的缺点是无法清晰表达哪些属性是必须的,哪些是可选的,构造注入的优势是通过构造强制依赖关系,不可能实例化不完全的或无法使用的bean. 第1种方法:直接传值 <!-- constructor方式注入写

spring中依赖注入方式总结

Spring中依赖注入的四种方式 在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入  这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式). 使用属性的setter方法注入 首先要配置被注入的bean,在该bean对应的类中,应该有要注入的对象属性或者基本数据类型的属性.例如:为UserBiz类注入UserDAO,同时为UserBiz注入基本数据类型String,那么这时,就要为UserDAO对象和String类型设置se