就配置了一个数据源,为什么提示 there is more than one bean of "DataSource" type

图片描述

我好像就配置了一个数据源,为什么注入的时候会提示有多个?

package com.example.demo.config;

import org.apache.commons.dbcp.BasicDataSource;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.PropertySource;

@Configuration

@PropertySource("classpath:application.properties")

public class DataSourceConfiguration {

@Value("${jdbc.driver}")

private String driver;

@Value("${jdbc.url}")

private String url;

@Value("${jdbc.username}")

private String username;

@Value("${jdbc.password}")

private String password;

@Value("${jdbc.maxActive}")

private int maxActive;

@Value("${jdbc.maxIdel}")

private int maxIdel;

@Value("${jdbc.maxWait}")

private long maxWait;

@Bean

//应该就这一个吧

public BasicDataSource dataSource(){

BasicDataSource dataSource = new BasicDataSource();

dataSource.setDriverClassName(driver);

dataSource.setUrl(url);

dataSource.setUsername(username);

dataSource.setPassword(password);

dataSource.setMaxActive(maxActive);

dataSource.setMaxIdle(maxIdel);

dataSource.setMaxWait(maxWait);

dataSource.setValidationQuery("SELECT 1");

dataSource.setTestOnBorrow(true);

return dataSource;

}

}

package com.example.demo.config;

import org.apache.ibatis.session.SqlSessionFactory;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.mybatis.spring.SqlSessionTemplate;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import org.springframework.transaction.PlatformTransactionManager;

import org.springframework.transaction.annotation.EnableTransactionManagement;

import org.springframework.transaction.annotation.TransactionManagementConfigurer;

import javax.annotation.Resource;

import javax.annotation.Resources;

import javax.sql.DataSource;

@Configuration

@EnableTransactionManagement

public class MyBatisConfig implements TransactionManagementConfigurer {

@Autowired

//这里怎么不能用@Autowired,用Resource倒是可以

private DataSource dataSource;

@Override

public PlatformTransactionManager annotationDrivenTransactionManager() {

return new DataSourceTransactionManager(dataSource);

}

@Bean(name = "sqlSessionFactory")

public SqlSessionFactory sqlSessionFactoryBean() {

SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

bean.setDataSource(dataSource);

try {

return bean.getObject();

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException(e);

}

}

@Bean

public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {

return new SqlSessionTemplate(sqlSessionFactory);

}

}

回答:

运行一下即可,看报错信息

回答:

我也遇到这样的问题

以上是 就配置了一个数据源,为什么提示 there is more than one bean of "DataSource" type 的全部内容, 来源链接: utcz.com/p/177631.html

回到顶部