Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java <;中方法setUserService的参数0;方法>;需要类型为<;服务>;那是找不到的_Java_Spring Boot_Spring Security_Autowired - Fatal编程技术网

Java <;中方法setUserService的参数0;方法>;需要类型为<;服务>;那是找不到的

Java <;中方法setUserService的参数0;方法>;需要类型为<;服务>;那是找不到的,java,spring-boot,spring-security,autowired,Java,Spring Boot,Spring Security,Autowired,我已经经历了这个问题,找不到发生了什么。。。。尝试@ComponentScan,尝试命名我的服务,但似乎都不起作用 错误: 我的安全配置: MyUserDetailServiceImpl: MyCommonBeanConfig: 我的应用程序: 您正在使用@Qualifier(value=“UserService”)查找UserService: @Autowired @Qualifier(value = "userService") public void setUserService(User

我已经经历了这个问题,找不到发生了什么。。。。尝试@ComponentScan,尝试命名我的服务,但似乎都不起作用

错误: 我的
安全配置
: My
UserDetailServiceImpl
: My
CommonBeanConfig
: 我的
应用程序

您正在使用
@Qualifier(value=“UserService”)
查找
UserService

@Autowired
@Qualifier(value = "userService")
public void setUserService(UserService userService) {
    this.userService = userService;
}
但是您没有它,因为您的
userserviceinpl
注释为
@Service
,而不提供它的id

要将id设置为您的
userserviceinpl
,您需要使用
@Service(“userService”)
对其进行注释。但如果您有一个
UserService
实现,只需从setter中删除
@Qualifier(value=“UserService”)
,因为它是冗余的

在我看来,这不是唯一一个需要删除
@限定符的地方


如果您有许多相同类型的bean,则需要使用
@Qualifier
注释来选择精确的bean。如果只有一个,则不需要使用它。

如果在运行junit测试时出现此错误,则可能需要为对象添加模拟


@MockBean-ClassError,该类对该答案有
@SpringBootConfiguration
注释

+1。查看下面关于
@Qualifier
注释的Spring文章您是对的,问题是在我没有名字的时候通过
@Qualifier
调用我的服务。@CléBeroliviera如果这个答案解决了您的问题,您可以接受它,为了让将来的人更容易找到答案,请删掉你的代码。
package com.project.config
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

private AuthenticationProvider authenticationProvider;

@Autowired
@Qualifier("daoAuthenticationProvider")
public void setAuthenticationProvider(AuthenticationProvider authenticationProvider) {
    this.authenticationProvider = authenticationProvider;
}

@Bean
public PasswordEncoder passwordEncoder(StrongPasswordEncryptor passwordEncryptor){
    PasswordEncoder passwordEncoder = new PasswordEncoder();
    passwordEncoder.setPasswordEncryptor(passwordEncryptor);
    return passwordEncoder;
}

@Bean
public DaoAuthenticationProvider daoAuthenticationProvider(PasswordEncoder passwordEncoder, UserDetailsService userDetailsService){
    DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
    daoAuthenticationProvider.setPasswordEncoder(passwordEncoder);
    daoAuthenticationProvider.setUserDetailsService(userDetailsService);
    return daoAuthenticationProvider;
}

@Autowired
public void configureAuthManager(AuthenticationManagerBuilder authenticationManagerBuilder){
    authenticationManagerBuilder.authenticationProvider(authenticationProvider);
}

@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
    httpSecurity
            .authorizeRequests().antMatchers("/", "/home", "/login", "/signup").permitAll()
        .and()
            .formLogin()
            .loginPage("/login")
            .failureUrl("/login-error")
        .and()
            .logout()
            .logoutSuccessUrl("/home");
}
}
package com.project.service.security
@Service("userDetailsService")
public class UserDetailsServiceImpl implements UserDetailsService {

private UserService userService;
private Converter<User, UserDetails> userUserDetailsConverter;

@Autowired
@Qualifier(value = "userService")
public void setUserService(UserService userService) {
    this.userService = userService;
}

@Autowired
@Qualifier(value = "userToUserDetails")
public void setUserUserDetailsConverter(Converter<User, UserDetails> userUserDetailsConverter) {
    this.userUserDetailsConverter = userUserDetailsConverter;
}

@Override
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
    return userUserDetailsConverter.convert(userService.findByEmail(email));
}
}
package com.project.service
@Service
@Profile("springdatajpa")
public class UserServiceImpl implements UserService{

private UserRepository userRepository;

@Autowired
public void setUserRepository(UserRepository userRepository) {
    this.userRepository = userRepository;
 }

private EncryptionService encryptionService;

@Autowired
public void setEncryptionService(EncryptionService encryptionService) {
    this.encryptionService = encryptionService;
}


@Override
public List<?> listAll() {
    List<User> users = new ArrayList<>();
    userRepository.findAll().forEach(users::add); //fun with Java 8
    return users;
}

@Override
public User getById(Integer id) {
    return userRepository.findOne(id);
}

@Override
public User saveOrUpdate(User domainObject) {
    if(domainObject.getPassword() != null){
        domainObject.setEncryptedPassword(encryptionService.encryptString(domainObject.getPassword()));
    }
    return userRepository.save(domainObject);
}
@Override
@Transactional
public void delete(Integer id) {
    userRepository.delete(id);
}

@Override
public User findByEmail(String email) {
    return userRepository.findByEmail(email);
}
}
package com.project.config
@Configuration
public class CommonBeanConfig {

@Bean
public StrongPasswordEncryptor strongEncryptor(){
    StrongPasswordEncryptor encryptor = new StrongPasswordEncryptor();
    return encryptor;
}
}
package com.project
@SpringBootApplication
public class App extends SpringBootServletInitializer{

public static void main(String[] args) {
    SpringApplication.run(applicationClass, args);
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(applicationClass);
}

private static Class<App> applicationClass = App.class;
}
package com.project.config
@Configuration
@EnableAutoConfiguration
@EntityScan(basePackages = {"com.ipayso.model"})
@EnableJpaRepositories(basePackages = {"com.ipayso.repositories"})
@EnableTransactionManagement
public class RepositoryConfiguration {

}
@Autowired
@Qualifier(value = "userService")
public void setUserService(UserService userService) {
    this.userService = userService;
}