前提

有一个starter,他有一个service,可以通过@Service注册成bean,或者通过config注入成bean,有一个controller通过@Controller注入成bean,并且通过@Autowired调用了该service。

当他使用mvn install打成jar包后被主项目引用,可能存在以下几种情况:

starter配置configstarter配置@Service使用方配置scan包含starter路径使用方调用@Autowired使用方调用starter的controller备注
×如果使用的bean名存才冲突会报错,好处是可以直接集成页面等
××××无法启动,因为未注入该bean
可以打包,但是无法启动,starter也不能直接启动,因为有2个bean注入,一个是@Service,一个是config配置的
×××常规使用方法,此时由于没有scan到starter package下的controller的bean,所以实际该页面没被注入,导致无法访问到,但是config
××√/×××不配置config,也不配置@Service,不能注入bean

注意:情况4是常见的,此时只有需要被注册成bean的才会被注册成bean,而其他的均不会,管理较为干净。而情况1是在集成新页面时会使用的,例如开发一个管理页面,只需要集成该starter,并且scan对应的pacakge即可。