I have some code that is trying to Autowire a Bean that contains the Spring Boot class RestTemplate
.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.filter.GenericFilterBean;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
public class JWTAuthenticationFilter extends GenericFilterBean{
@Autowired
RequestPublicKey requestPublicKey;
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
System.out.println(requestPublicKey.getPublicKey());
filterChain.doFilter(request, response);
}
}
My initial code for the class RequestPublicKey
looks like this:
@Component
public class RequestPublicKey {
public String getPublicKey(){
RestTemplate restTemplate = new RestTemplate();
String publicCreds = restTemplate.getForObject("http://localhost:8081/get-public-key?kid=bf3b7429-261e-48c5-8409-79e1c9f203de", String.class);
return publicCreds;
}
}
When I try to Autowire RequestPublicKey
it returns null
. I think that is due to that I instantiate RestTemplate
with RestTemplate restTemplate = new RestTemplate()
. To get around that issue I tried to Autowire RestTemplate
like this
@Component
public class RequestPublicKey {
@Autowired
private RestTemplate restTemplate;
public String getPublicKey(){
String publicCreds = restTemplate.getForObject("http://localhost:8081/get-public-key?kid=bf3b7429-261e-48c5-8409-79e1c9f203de", String.class);
return publicCreds;
}
}
But then I get the Could not autowire. No beans of type RestTemplate found
.
Is it possible to Autowire Spring Boot classes? Or should I just instantiate RequestPublicKey
like RequestPublicKey requestPublicKey = new RequestPublicKey()
?