RuoYi框架巧妙的Bean依赖注入机制:DataSource无需显式定义
RuoYi框架以其简洁高效的代码风格而闻名,但其Bean依赖注入的实现方式,特别是DataSource的注入,常常让初学者困惑。本文将深入剖析RuoYi框架如何实现DataSource的依赖注入,无需显式定义实体类。
问题:DataSource的隐式注入
在模仿RuoYi框架的com.ruoyi.framework.config.mybatisconfig时,开发者可能会遇到找不到DataSource类型的Bean的错误。然而,代码中并没有显式的DataSource实体类定义,这正是问题的关键所在。
解决方案:Spring的@Configuration和@Bean注解
RuoYi框架巧妙地利用了Spring框架的@Configuration和@Bean注解。以DruidConfig.java为例,关键代码如下:
@Configurationpublic class DruidConfig { @Bean @ConfigurationProperties("spring.datasource.druid.master") public DataSource masterDataSource(DruidProperties druidProperties) { DruidDataSource dataSource = DruidDataSourceBuilder.create().build(); return druidProperties.dataSource(dataSource); } // ... (slaveDataSource方法类似) ... @Bean(name = "dynamicDataSource") @Primary public DynamicDataSource dataSource(DataSource masterDataSource) { Map<Object, Object> targetDataSources = new HashMap<>(); targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource); // ... (设置slaveDataSource) ... return new DynamicDataSource(masterDataSource, targetDataSources); }}
登录后复制
本文来自互联网或AI生成,不代表软件指南立场。本站不负任何法律责任。