我使用基于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/

10-09 04:45