目录

Spring注入接口实现错误

现象

Service下有接口

1
2
3
4
5
@Service
public interface Common {
    String a = "a";
    void sout(String s);
}

和实现关系

1
2
3
4
5
6
7
8
@Service
public class AImpl implements Common{
    @Override
    public void sout(String s) {
        System.out.println(a);
        System.out.println(s);
    }
}

在Controller下进行自动注入

1
2
 @Autowired/@Resource
AImpl aImpl;

启动Spring时报错

解决

方案一

我的,在Service实现类注入时自定义名字

1
2
3
4
5
6
7
8
@Service("AImpl")
public class AImpl implements Common{
    @Override
    public void sout(String s) {
        System.out.println(a);
        System.out.println(s);
    }
}

在Controller注入接口时给对应名字注入

1
2
@Autoired/@Reource(name = "AImpl")
Common common;

./2.png

方案二

项目组长写了一个接口ACommon继承于接口Common

1
2
3
@Service
public interface ACommon extends Common{
}

Controller注入子类接口

1
2
@Autoired/@Reource
ACommon aCommon;

完美解决!