Неудовлетворенная зависимость выражается через параметр конструктора 1 с userRepository - PullRequest
0 голосов
/ 27 июня 2019

В приложении весенней загрузки, которое реагирует и использует jwt, в моем Spring-Cloud-Gateway у меня есть этот код.

@EnableDiscoveryClient
@SpringBootApplication
public class GatewayServiceApplication {

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

}

@Configuration
@EnableWebFluxSecurity
@EnableReactiveMethodSecurity
public class SpringSecurityWebFluxConfig {

    private final UserServiceImpl userService;
    private final JwtTokenUtil tokenUtil;

    private static final String[] AUTH_WHITELIST = {
        "/resources/**",
        "/webjars/**",
        "/authorize/**",
        "/favicon.ico"};


    public SpringSecurityWebFluxConfig(JwtTokenUtil tokenUtil, UserServiceImpl userService) {
        this.tokenUtil = tokenUtil;
        this.userService = userService;
    }
    ..
}

@Service
public class UserServiceImpl implements ReactiveUserDetailsService, UserService {

    private final UserRepository userRepository;

    public UserServiceImpl(final UserRepository userRepository) {
        this.userRepository = userRepository;
    }
    ...

}

@Repository
public interface UserRepository extends ReactiveCrudRepository<User, Integer>{
}

public class JWTHeadersExchangeMatcher implements ServerWebExchangeMatcher {
    @Override
    public Mono<MatchResult> matches(final ServerWebExchange exchange) {
    }
}

public class JWTReactiveAuthenticationManager implements ReactiveAuthenticationManager {
    ...

    public JWTReactiveAuthenticationManager(final PasswordEncoder passwordEncoder, final UserServiceImpl userService) {
        this.passwordEncoder = passwordEncoder;
        this.userService = userService;
    }
}


public class JwtTokenUtil {
    ...
}

public class TokenAuthenticationConverter implements Function<ServerWebExchange, Mono<Authentication>> {
     private final JwtTokenUtil tokenProvider;

    public TokenAuthenticationConverter(JwtTokenUtil tokenProvider) {
        this.tokenProvider = tokenProvider;
    }
}

public class TokenAuthenticationConverter implements Function<ServerWebExchange, Mono<Authentication>> {
     private final JwtTokenUtil tokenProvider;

    public TokenAuthenticationConverter(JwtTokenUtil tokenProvider) {
        this.tokenProvider = tokenProvider;
    }
}
  • [main] onfigReactiveWebServerApplicationContext: во время инициализации контекста обнаружено исключение - отмена попытка обновления: org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания бина с именем 'springSecurityWebFluxConfig', определенного в файл [/Home/mac/Development/project/reactive-cloud/gateway-service/build/classes/java/main/com/example/gatewayservice/config/SpringSecurityWebFluxConfig.class]: Неудовлетворенная зависимость выражается через параметр конструктора 1; вложенное исключение org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания бина с именем 'userServiceImpl', определенным в файле [/Home/mac/Development/project/reactive-cloud/gateway-service/build/classes/java/main/com/example/gatewayservice/service/UserServiceImpl.class]: Неудовлетворенная зависимость выражается через параметр конструктора 0; вложенное исключение org.springframework.beans.factory.NoSuchBeanDefinitionException: нет квалифицирующий боб типа 'com.example.gatewayservice.repository.UserRepository' доступно: ожидается, по крайней мере, 1 боб, который считается кандидатом autowire. Аннотации зависимостей: {} 2019-06-27 11: 47: 23.336 INFO 53073 --- [
    main] ConditionEvaluationReportLoggingListener:

Пытался поставить автонастройку

в UserServiceImpl в классе SpringSecurityWebFluxConfig
в UserRepository в классе UserServiceImpl
на UserServiceImpl в JWTReactiveAuthenticationManager.class

но получите ту же ошибку

Редактировать

если я использую

@ EnableR2dbcRepositories для GatewayServiceApplication, у меня нет этой ошибки, но она ищет DatabaseClient

1 Ответ

0 голосов
/ 27 июня 2019

Пожалуйста, добавьте аннотацию @Autowired в классе UserServiceImpl для переменной UserRepository в конструкторе или на уровне переменной.

...