【发布时间】:2019-01-26 05:00:07
【问题描述】:
Spring Boot 应用程序在启动服务器时抛出异常。
例外是:
上下文初始化期间遇到异常 - 取消 刷新尝试: org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“userController”的 bean 时出错:不满足的依赖关系 通过字段“userService”表示;嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“userService”的 bean 时出错:不满足的依赖关系 通过字段“userRepository”表示;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 符合条件的 bean 类型 'yhcmain.healthcare.repositories.UserRepository' 可用:预期 至少 1 个符合自动装配候选资格的 bean。依赖 注释: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
应用程序启动失败
说明:
yhcmain.healthcare.service.user.UserServiceImpl 中的字段 userRepository 需要一个找不到类型为“yhcmain.healthcare.repositories.UserRepository”的 bean。
行动:
考虑在你的配置中定义一个“yhcmain.healthcare.repositories.UserRepository”类型的bean
控制器:
@RestController
@CrossOrigin("*")
public class UserController {
@Autowired
private ServiceResponse response;
@Autowired
private UserService userService;
@RequestMapping(value = "/index", method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<ServiceResponse> signUpAttempt(@RequestBody User user) {
...
...
}
}
服务:
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
public User createUser(User user) {
return this.userRepository.save(user);
}
}
存储库:
@Repository("userRepository")
public interface UserRepository extends CrudRepository<User, String> {
}
主要应用:
@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class HealthcareApplication implements WebMvcConfigurer {
public static void main(String[] args) {
SpringApplication.run(HealthcareApplication.class, args);
}
@Override
public void addCorsMappings(CorsRegistry registry) {
...
...
}
}
【问题讨论】:
-
组件扫描中是否添加了yhcmain.healthcare.repositories包?
-
在自动装配 userRepository 时尝试
@Qualifier("userRepository")投入使用(同时保留@Autowired和@Qualifier.... -
@FarazDurrani 我试过了,它不起作用。
-
@GarimaGupta 你成就了我的一天。我的印象是spring boot会自动扫描根目录下的所有子目录。添加 @ComponentScan(basePackages = "human.healthcare.repositories") 消除了错误。
-
@GarimaGupta 现在服务器正在运行,但服务器每次都响应 404 错误,因为我已将 componentScan 添加到 Repository 包,该包现在已成为基本包,Spring 现在正在搜索所有其他文件存储库包。
标签: java spring-mvc spring-boot