I have a problem when trying to start my Spring Boot application with tokenization. This is my service class:
@Service @Slf4j public class JwtTokenService { private final JwtConfig jwtConfig; public JwtTokenService(JwtConfig jwtConfig) { this.jwtConfig = jwtConfig; } public String generateToken(Authentication authentication) { Long now = System.currentTimeMillis(); return Jwts.builder() .setSubject(authentication.getName()) .claim("authorities", authentication.getAuthorities().stream() .map(GrantedAuthority::getAuthority).collect(Collectors.toList())) .setIssuedAt(new Date(now)) .setExpiration(new Date(now + jwtConfig.getExpiration() * 1000)) .signWith(SignatureAlgorithm.HS512, jwtConfig.getSecret().getBytes()) .compact(); } }
This is my config class:
@Data @NoArgsConstructor @Component public class JwtConfig { @Value("${security.jwt.uri:/auth/**}") private String Uri; @Value("${security.jwt.header:Authorization}") private String header; @Value("${security.jwt.prefix:Bearer }") private String prefix; @Value("${security.jwt.expiration:#{24*60*60}}") private int expiration; @Value("${security.jwt.secret:JwtSecretKey}") private String secret; }
And I get the following error when I try to run my Application:
*************************** APPLICATION FAILED TO START *************************** Description: Parameter 0 of constructor in services.JwtTokenService required a bean of type 'config.JwtConfig' that could not be found. Action: Consider defining a bean of type 'config.JwtConfig' in your configuration.
I dont understand why i get this error.
Advertisement
Answer
I solved it. The problem was that the package where the config lays was not scanned by my spring boot application. In my @SpringBootApplication I added @ComponentScan with the package where JwtConfig lays.