SpringCloud 模块之间Bean的注入
- 例子分析:SpringCloud项目有模块
core、menu
在core中配置了数据源的Bean,假如在Core模块中使用该数据源直接,那么直接使用Autowired
注入Bean即可,但是我的Menu模块使用该Bean怎么办?
在Menu模块注入Bean
Menu中注入并且使用Bean的代码
- 此时会报错找不到
HikariCpConfig
添加core模块的依赖到Menu中,
<dependency>
<groupId>com.li</groupId>
<artifactId>os_coreserver</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
此时暂时解决了代码中找不到类的问题,导入依赖,解决找不到类的问题。在这里看有没有加入模块依赖
@Api("这是菜单的Controller")
@RestController
@RequestMapping("/menu")
public class MenuController {
/**
* 在Menu模块中注入Core中的HikariCpConfig
*/
@Autowired
HikariCpConfig hikariCpConfig;
@Autowired
HikariCpConfig hikariCpConfig;
@RequestMapping("/mysql")
public void test2() throws SQLException {
Connection connection = hikariCpConfig.connection();
String sql="select count(*) from t_menu";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
System.out.println(resultSet.getRow());
}
}
启动Menu模块报错如下
- 问题是我们都已经添加了Core的模块到Menu模块当中,看报错的原因就是Core中的Bean注入失败。那就解决这个问题。
@SpringBootApplication注解加上扫描的包
//启动的时候自动扫描"com.li.core","com.li.menu"这两个包下的所有配置以及Bean等
@SpringBootApplication(scanBasePackages = {"com.li.core","com.li.menu"})
public class MenuApplication {
private static Logger logger = LogManager.getLogger(MenuApplication.class);
public static void main(String[] args) {
logger.info("启动了!");
SpringApplication.run(MenuApplication.class, args);
}
}
重启项目,启动问题完美解决,不过这样好像有点问题,后面再说。