JIRA API에서 가져온 JSON 데이터를 반환하는 로거가있는 @Bean이 있습니다. 현재 프로그램을 시작하는 동안 내 응답을 기록하고 있습니다. 이제 컨트롤러에서 @GetMapping 사용을 시작하고 localhost : 8080 /에서 GET 요청을 할 때마다 정보를 기록하고 싶습니다.
이것은 컨트롤러 클래스의 @Bean이며 @GetMapping으로 변경하고 싶습니다.
@Bean
public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
return args -> {
IssuesList response = restTemplate.getForObject(
"https://.../rest/api/2/search?jql=project="+projectId+" AND status in (done) AND issueType in (Story)&expand=changelog",
IssuesList.class);
List<Issues> issuesData = response.getIssuesList();
log.info(issuesData.toString());
};
}
이것은 내 RestTemplate @Bean입니다.
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.basicAuthentication(auth,auth2).build();
}
프로그램을 시작할 때받는 응답입니다.
[{key= 'PE-1322', fields= {storyPoints= '3', issueType= 'Story', created= '2020-11-18T09:16:55.816+0000'}}]
CommandLineRunner에서 @Bean을 @GetMapping으로 변경하려고 시도했지만 그렇게하면이 응답 만 얻습니다.
2021-01-15 16:08:59.261 INFO 36704 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-01-15 16:08:59.261 INFO 36704 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2021-01-15 16:08:59.261 INFO 36704 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms
그리고 localhost : 8080에서 빈 JSON {}을 얻습니다.
# 편집 : 이것은 내 전체 컨트롤러 클래스입니다.
@RestController
public class Controller {
private String auth = "...";
private String auth2 = "...";
private String projectId = "...";
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.basicAuthentication(auth,auth2).build();
}
@Bean
public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
return args -> {
IssuesList response = restTemplate.getForObject(
"https://.../rest/api/2/search?jql=project="+projectId+" AND status in (done) AND issueType in (Story)&expand=changelog",
IssuesList.class);
List<Issues> issuesData = response.getIssuesList();
log.info(issuesData.toString());
};
}
}
@GetMapping으로 편집 된 버전입니다.
@RestController
public class Controller {
private String auth = "...";
private String auth2 = "...";
private String projectId = "...";
private static final Logger log = LoggerFactory.getLogger(KpiMetricsApplication.class);
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.basicAuthentication(auth,auth2).build();
}
@GetMapping("/")
public String run(RestTemplate restTemplate) throws Exception {
IssuesList response = restTemplate.getForObject(
"https://.../rest/api/2/search?jql%3Dproject%3D"+projectId+"%20AND%20status%20in%20(done)%20AND%20issueType%20in%20(Story)&expand%3Dchangelog",
IssuesList.class);
List<Issues> issuesData = response.getIssuesList();
return issuesData.toString();
}
}
# 최종 편집
@sarcode 덕분에 해냈습니다. 업데이트 된 수업은 다음과 같습니다.
먼저 Resttemplate 구성 클래스를 만들었습니다.
@Configuration
@Slf4j
public class RestConfig {
private String auth = "...";
private String auth2 = "...";
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.basicAuthentication(auth,auth2).build();
}
@Bean
public CommandLineRunner startup() {
return args -> {
log.info("**************************************");
log.info(" Configuring with RestTemplate");
log.info("**************************************");
};
}
}
그리고 이와 같이 컨트롤러 클래스를 업데이트했는데 작동하게 만든 것은 @Autowired 주석이었습니다.
@RestController
public class Controller {
private static final Logger log = LoggerFactory.getLogger(KpiMetricsApplication.class);
private String projectId = "...";
@Autowired
private RestTemplate rest = new RestTemplate();
@GetMapping("/")
public String run() throws Exception {
IssuesList response = rest.getForObject(
"https://.../rest/api/2/search?jql=project="+projectId+ " AND status in (done) AND issuetype in (Story)&expand=changelog",
IssuesList.class);
List<Issues> issuesData = response.getIssuesList();
log.info(issuesData.toString());
return response.toString();
}
}