我使用基于Java的配置。当我只有一个UserRepository bean时,一切都很好。但是,当我添加UserRepository的另一个实现时,出现此错误
org.springframework.beans.factory.BeanCreationException:创建名称为'answerService'的bean时出错:自动连接依赖项的注入失败;嵌套的异常是org.springframework.beans.factory.BeanCreationException:无法自动连线字段:public com.springapp.mvc.service.NewUserService com.springapp.mvc.service.AnswerService.userService;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为'newUserService'的bean时出错:自动连接依赖项的注入失败;嵌套的异常是org.springframework.beans.factory.BeanCreationException:无法自动连线字段:public com.springapp.mvc.repository.UserRepository com.springapp.mvc.service.NewUserService.userRepository;嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义[com.springapp.mvc.repository.UserRepository]类型的唯一bean:需要单个匹配的bean,但找到了2:[jpaUserRepository,jsonUserRepository]
这是我的配置:
@EnableWebMvc
@Configuration
@ComponentScan("com.springapp.mvc")
@PropertySource("classpath:names.properties")
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Bean
public InternalResourceViewResolver setupViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/pages/");
resolver.setSuffix(".jsp");
return resolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/WEB-INF/resources/");
}
}
而我的服务正在使用UserService实现之一:
@Service
public class NewUserService {
@Autowired
@Qualifier("jsonRepo")
public UserRepository userRepository;
// methods ommited
}
我尝试将
@Qualifier
批注添加到UserRepository userRepository
和特定的实现中:@Repository("jsonRepo")
public class JsonUserRepository implements UserRepository {...}
但这是行不通的。
我该如何解决这个问题?
最佳答案
尝试这个:
@Repository
@Qualifier("jsonRepo")
public class JsonUserRepository implements UserRepository {...}
关于java - 如何在基于Java的配置中避免自动连接依赖项注入(inject)错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25770703/