Java Spring发现多个bean定义错误
我的基于Spring的web项目有以下代码: 控制器:Java Spring发现多个bean定义错误,java,spring,spring-mvc,Java,Spring,Spring Mvc,我的基于Spring的web项目有以下代码: 控制器: @Controller @RequestMapping("mycontroller") public class MyObjectController { @Autowired private MyService service; // Code omitted } @Service public class MyServiceImpl implements MyService { @Autowired
@Controller
@RequestMapping("mycontroller")
public class MyObjectController {
@Autowired
private MyService service;
// Code omitted
}
@Service
public class MyServiceImpl implements MyService {
@Autowired
@Qualifier("mydao")
private MyDao mydao;
@Autowired
@Qualifier("mydao2")
private MyDao2 mydao2;
// Code omitted
}
<annotation-driven />
<context:annotation-config />
<context:component-scan base-package="com.mycompany" />
<beans:bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<beans:bean id="myService" class="com.mycompany.serviceimpl.MyServiceImpl" />
服务:
@Controller
@RequestMapping("mycontroller")
public class MyObjectController {
@Autowired
private MyService service;
// Code omitted
}
@Service
public class MyServiceImpl implements MyService {
@Autowired
@Qualifier("mydao")
private MyDao mydao;
@Autowired
@Qualifier("mydao2")
private MyDao2 mydao2;
// Code omitted
}
<annotation-driven />
<context:annotation-config />
<context:component-scan base-package="com.mycompany" />
<beans:bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<beans:bean id="myService" class="com.mycompany.serviceimpl.MyServiceImpl" />
Context.xml(Spring):
@Controller
@RequestMapping("mycontroller")
public class MyObjectController {
@Autowired
private MyService service;
// Code omitted
}
@Service
public class MyServiceImpl implements MyService {
@Autowired
@Qualifier("mydao")
private MyDao mydao;
@Autowired
@Qualifier("mydao2")
private MyDao2 mydao2;
// Code omitted
}
<annotation-driven />
<context:annotation-config />
<context:component-scan base-package="com.mycompany" />
<beans:bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<beans:bean id="myService" class="com.mycompany.serviceimpl.MyServiceImpl" />
但是,它会抛出以下错误:
NoSuchBeanDefinitionException:未定义类型为[com.mycompany.service.MyService]的唯一bean:应为单个匹配bean,但找到2:[MyService,myserviceinpl]
您可以将@Service
放在MyServiceImpl
上,或者在Context.xml
中声明bean。不要两个都做,否则你会吃到两颗豆子
从XML文件中删除myService
bean定义,就可以开始了
此外,您不需要声明
DefaultAnnotationHandlerMapping
或AnnotationMethodHandlerAdapter
bean-默认情况下这些bean可用。您的bean定义了两次,在这里(@Service
注释导致注册myServiceImpl
bean):
这里(在Context.xml
中,bean带有myService
id):
从XML中删除定义或删除注释