我创建了一个由Maven管理的Spring Boot应用程序。 我正在从我们的Maven存储库中检索公司的库。
在这个图书馆,我们有一个服务界面,没有注明' @ Service':
public interface MyService {
//...
}
此服务只有一个实现:
public class DefaultMyService implements MyService {
//...
}
此库上下文以旧的Spring方式(在applicationContext.xml文件中)进行管理。 我通常认为,如果范围内只有一个,Spring Boot能够找到实现。
当我尝试运行" spring-boot:run"在我的项目中,它将失败并出现以下错误:
没有符合条件的bean' com.pharmagest.saml.SAMLService' 可用:预计至少有1个符合autowire资格的bean 候选人。依赖注释: {@ org.springframework.beans.factory.annotation.Autowired(所需=真)}
我试过了:
@ComponentScan(basePackages={"com.mycompany.web", "com.mycompany.thelibrary.client.*", "com.mycompany.thelibrary.services.*"})
在所有情况下,我只能构建maven但不能运行该项目。 你有什么建议来帮助我吗?谢谢!
答案 0 :(得分:3)
DefaultMyService
没有@Component
(或@Service
)注释将无法被检测到,因此无法工作。DefaultMyService
而不是接口。对于你的理解错误,Spring不会检测到任何错误只需在配置中添加@Bean
@Bean
public DefaultMyService myService() {
return new DefaultMyService();
}
或者导入其他库applicatiponContext.xml
,这是你应该做的。
@ImportResource("classpath:/applicationContext.xml")
在@SpringBootApplication
旁边添加此内容。