@Bean
是Spring提供的注册Bean的方式。
要点
看下面的:
其中1,2,3分别是三个断点的执行顺序,注意,执行顺序并不是2,1,3。
master
注册完毕后,才进入dynamicDataSouce()
, 执行到master()
时,DEBUG并不能进入此方法。
查看@Bean
的注释:
结论:
master()
这样的写法只是一种依赖注入的语义,它并不会创建一个新的DataSource实例(master),而是将上面已经注册好的的master bean注入进来,这种写法和直接在dynamicDataSource方法形参中注入是一样的效果。