是弹簧和弹簧靴的新手。我实际上是在尝试使用springboot中的restclient。当我编写客户端并获取响应时,我想读取响应主体(即String),并希望将其转换为JSON供我使用。因此,我编写了RestClient类,并从中自动连接了将String转换为JSON的JsonUtil类。但是我的自动装配jsonutil无法在Rest客户端类中使用。我不知道我需要在这里做什么。下面是我的代码。
我的RestClient
@Component
public class RestClient {
@Autowired
JsonUtil jsonUtil;
private static final String URL ="https://test.com?q=";
private static String getURL(String value){
if(!StringUtils.isBlank(value))
return URL+value;
return null;
}
private static void get(String val){
RestTemplate restTemplate = new RestTemplate();
String resourceUrl=getURL(val);
ResponseEntity<String> response = null;
if(!StringUtils.isBlank(resourceUrl)){
response = restTemplate.getForEntity(resourceUrl , String.class);
}
//Though i have autowired JsonUtil, i dont have that object to use it here
jsonUtil. //this variable is not available
}
我的JsonUtil
import com.fasterxml.jackson.databind.ObjectMapper;
@Component
public class JsonUtil {
@Autowired
private ObjectMapper objectMapper;
public JsonUtil(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
}
public JsonNode getStringAsJson(String value) {
try {
return objectMapper.readTree(value);
}catch (IOException e) {
String msg = e.getMessage();
LOG.info(msg);
}
return null;
}
}
任何帮助表示赞赏
答案 0 :(得分:0)
您正在尝试在静态函数内使用实例变量。这是不可能的。以这种方式考虑,该类可以有许多实例,每个实例都有其自己的特定实例变量。静态方法如何知道该选择哪一个。
您应该使方法成为非静态方法以使其起作用。
但是,如果您决定将函数设为静态,请将变量也设为静态,并且由于您无法自动关联静态字段,请尝试类似的操作
private static JsonUtil jsonUtil;
@Autowired
ApplicationContext ctx;
@PostConstruct
public void init() {
jsonUtil = ctx.getBean(JsonUtil.class);
}