关于 @Autowired 的问题

各位大神好!我的maven项目有两个模块 A模块 与 B模块 ,B模块在pom中引入了A模块依赖

A模块中

package com.mytest.base.common;

.....代码其他省略.....

//(CommonApi是一个接口,位于A模块中,但是 CommonApi 的实现是在 B模块中)
@Autowired
private CommonApi commonApi; 

public void handleLog() {
    commonApi.getSysConfig();
}

B模块中

package com.mytest.web;

import com.mytest.base.common.CommonApi;

@Service
public class CommonApiImpl implements CommonApi {
    @Override
    public void getSysConfig() {
        //...
    }
}

可是启动项目报错:无法找到 CommonApi,但是我看别人的项目中这样是可以的呀,为什么我亲自实验后不行呢。

启动类上也加了注解:

@ComponentScan(basePackages = {"com.mytest"})

还请大神指点一下~

补充:
我发现如果CommonApi 的实现类移动到A模块就可以了,但是我需要让实现类在B模块。。。

阅读 1.8k
3 个回答

启动类要在b模块

ComponentScan这就不加了,启动类丢到com.mytes或者com下面,解决一切问题

@ComponentScan(basePackages = {"com.mytest.**"})

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题