org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: url not set

spring数据源配置文件引入配置类的两种方式

方式

方式

错误原因分析

方式

@PropertySource("classpath:db.properties")
public class DataSourceConfig2 {
	@Value("${jdbc.driverClassName}")
    private String driverClassName;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;
    
    @Bean("dataSource")
    public DataSource  getDruidDataSource(){
    DruidDataSource ds = new DruidDataSource();
    ds.setDriverClassName(driverClassName);
    ds.setUrl(url);
    ds.setUsername(username);
    ds.setPassword(password);
    return ds;
    }
}
@Import({DataSourceConfig2.class})
@Configuration
//spring配置类里面引入DataSourceConfig2.class
public class SpringConfigHand2 {

}

方式

@Configuration
@ComponentScan("com.hand.service")
//导入外部配置文件
@Import(DataSourceConfig.class)
public class SpringConfigHand2 {
	@Value("${jdbc.driver}") * String driver;
	@Value("${jdbc.url}") String url;
	@Value("${jdbc.username}") String username;
	@Value("${jdbc.password}") String password;
	
	/**
	  * 通过@Bean将第三方的类初始化到容器中
	 * 通过@Value从外部配置文件通过key获取的值赋值属性
	 * @return 连接池对象
	 */
	@Bean
	public DataSource getDataSource(){
	
	     //创建连接池对象
	     DruidDataSource dataSource = new DruidDataSource();
	     //给连接池对象的四个基本参数赋值
	     dataSource.setDriverClassName(driver);
	     dataSource.setUsername(username);
	     dataSource.setUrl(url);
	    dataSource.setPassword(password);
	     return dataSource;
	 }
   @Bean
   public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
	    SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
	     //设置模型类的别名扫描
	    ssfb.setTypeAliasesPackage("com.hand.entity");
	    //设置数据源:mybatis框架使用第三方数据库连接
	    ssfb.setDataSource(dataSource);
	    return ssfb;
	  }
   @Bean
   public MapperScannerConfigurer mapperScannerConfigurer(){
	    MapperScannerConfigurer msc = new MapperScannerConfigurer();
	    msc.setBasePackage("com.hand.dao");
	    return msc;
  }
  @Bean
  public PlatformTransactionManager createTransactionManager(DataSource dataSource){
     DataSourceTransactionManager pt = new DataSourceTransactionManager();
     pt.setDataSource(dataSource);//事务管理依赖底层的Connection. 从数据库连接池去connection
    return pt;
	    }
	}
@Configuration
@ComponentScan("com.hand.service")
//导入外部配置文件
@Import(DataSourceConfig.class)
public class SpringConfigHand2 {
	/**
	  * 通过@Bean将第三方的类初始化到容器中
	 * 通过@Value从外部配置文件中通过key获取的值赋值属性
	 * @return 连接池对象
	 */
	@Bean
	public DataSource getDataSource(@Value("${jdbc.driver}") String driver,
									@Value("${jdbc.url}") String url,
									@Value("${jdbc.username}") String username,
									@Value("${jdbc.password}") String password){
	     //创建连接池对象
	     DruidDataSource dataSource = new DruidDataSource();
	     //给连接池对象的四个基本参数赋值
	     dataSource.setDriverClassName(driver);
	     dataSource.setUsername(username);
	     dataSource.setUrl(url);
	    dataSource.setPassword(password);
	     return dataSource;
	 }
   @Bean
   public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
	    SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
	     //设置模型类的别名扫描
	    ssfb.setTypeAliasesPackage("com.hand.entity");
	    //设置数据源:mybatis框架使用第三方数据库连接池
	    ssfb.setDataSource(dataSource);
	    return ssfb;
	  }
   @Bean
   public MapperScannerConfigurer mapperScannerConfigurer(){
	    MapperScannerConfigurer msc = new MapperScannerConfigurer();
	    msc.setBasePackage("com.hand.dao");
	    return msc;
  }
  @Bean
  public PlatformTransactionManager createTransactionManager(DataSource dataSource){
     DataSourceTransactionManager pt = new DataSourceTransactionManager();
     pt.setDataSource(dataSource);//事务管理依赖底层的Connection. 从数据库连接池去connection
    return pt;
	    }
	}

原文地址:https://blog.csdn.net/qq_63863019/article/details/126775594

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_43516.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注