Search

반응형

요즘 딥러닝과 파이썬만 공부하다 오랜만에 자바 스프링 한 번 해보려고 VSCode를 실행했다.

너무 오래되었는지 오류가 났다.

VSCode는 기존에 세팅 방식에서 변한 건 없고 jdk 버전만 올려주니 잘 되었다.

Spring.io에서 STS를 다운 받아서 실행하는데 오류가 난다.

 

오류메시지

오늘 일자로 STS(이클립스 버전) 받았고 jdk17 버전으로 세팅했다.

Spring Web 프로젝트를 Gradle로 생성했다.

그러자 위 오류가 났다.

오류정보 : 'Import Gettiing Started Content' has encountered a problem. ToolchainDownloadFailedException: No locall installed toolchains match and toolchain download repositories have not been configured.

사실 첨 보는 오류였다.

오류 정보도 친절하지 않네. 어이구야.

같은 조건으로 Maven 프로젝트는 문제 없이 잘 된다.

Gradle에서 jdk 버전 체크를 하는 듯 다.

 

해결방법 

jdk17, jdk19로 했더니 계속 오류가 났다.

오늘자로 받은 Spring STS는 최저 jdk 버전이 21부터 시작한다.

1. jdk21 버전을 다운 받는다. (https://jdk.java.net/archive/)

2. 원하는 위치에 압축을 푼다. (예: C:\jdk-21.0.2)

3. 환경설정에서 JAVA_HOME의 jdk 위치를 수정해서 넣어준다.

4. 명령 프롬프트에서 잘 세팅 되었는지 확인한다.

5. Spring STS를 실행하고 상단 Window>Preferences를 클릭한다.

6. Java>Compiler를 선택하고 JDK를 21로 변경 후 Apply(적용)한다.

7. Java>Installed JREs를 선택한 후 21 버전으로 선택 후 apply(적용)을 클릭한다.

8. Spring STS를 종료한다.

9. 원도우 탐색기를 실행해서 Spring STS가 설치된 위치로 이동한다.

10. SpringToolSuite4.ini 파일에 마우스 우클릭을 해서 메모장에서 편집을 클릭한다.

11. -vm을 찾고 그 아래 있던 정보는 지우고 새로 설치한 jdk위치를 포함한 아래 경로를 넣어주고 저장한다.

12. Spring STS를 다시 실행한다.

13. Spring Web Gradle 프로젝트를 생성한다.

 

이제 잘 실행될 것이다.

 

PS. SpringWeb 프로젝트를 생성했지만 Boot Dashboard의 local에 추가가 안되면 프로젝트 생성에 오류가 발생한 것이다. 

프로젝트가 오류 없이 생성되면 아래와 같이 자동으로 프로젝트가 추가된다.

 

이번 포스팅에서 ToolchainDownloadFailedException: No locall installed toolchains match and toolchain download repositories have not been configured.

오류 해결방법에 대해 알아봤다.

삽질은 이제 그만...

 

 

 

 

 

 

 

반응형
반응형

1탄에 이어 설명해 본다.

스프링 배치(spring batch)는 별도로 추가 코딩 작업량을 줄여주는 많은 클래스들을 제공해서 

비즈니스 로직에 집중할 수 있도록 한다.

 

 

https://spring.io/guides/gs/batch-processing/#scratch 참조

먼저 작업을 구성해야 하는데 @Configuration 클래스를 위 예제처럼 구성해야 한다.

@EnableBatchProcessing 어노테이션은 Job을 지원하는 주요 빈(bean)이 추가된다.

스프링 배치(spring batch)는 job과 step이 필요하므로

BatchConfiguration에 JobBuilderFactory와 StepBuilderFactory 객체를 추가한다.

 

이제 reader, processor, writer를 추가해 보자.

https://spring.io/guides/gs/batch-processing/#scratch 참조

reader()는 @Bean 어노테이션을 붙여서 사용한다.

<Person> 비즈니스 클래스를 사용한다.

return으로 FlatFileItemReaderBuilder<Person>() 생성자를 new를 사용해서 

인스턴스화 한다.

우선 .name은 personItemReader라고 정했다. 임의로 본인이 알아보고 쉽게 정하면 된다.

.resource는 데이터가 있는 파일을 지정한다. Database는 reader부터 다른 방식으로 사용한다.

.delimited() 는 파일 구분자로 파싱을 한다.

.names를 통해 키 값을 정하고 

.fieldSetMapper로 Person.class와 값을 매핑한다.

이렇게 .build() 하면 reader는 설정된다.

 

.

https://spring.io/guides/gs/batch-processing/#scratch 참조

 

두번째로 processor()는 reader()에서 읽어온 한 건의 데이터를 

비즈니스적으로 처리를 할 수 있다.

https://spring.io/guides/gs/batch-processing/#scratch 참조

 

마지막으로 writer()이다.

reader()에서 읽어 온 데이터를 가지고 저장/수정 처리를 한다.

.sql에서 insert문을 확인할 수 있다.

:firstName, :lastName은 Person의 속성 값과 매핑된다.

 

https://spring.io/guides/gs/batch-processing/#scratch 참조

이제 실제 배치를 설정한다.

우선 Job을 만들고 .flow로 step을 지정한다.

step1에서 reader, processor, writer를 순서대로 지정해 준다.

 

https://spring.io/guides/gs/batch-processing/#scratch 참조

JobCompletionNotificationListener 클래스는 job 리스너로

job 시작 전과 후에 비즈니스 처리가 가능하다.

위 예제는 afterJob 메서드를 구현해서

Job이 끝날 때 마지막 작업을 코딩했다.

내용을 보면 select 문을 사용해서

입력 사항들이 잘 처리되었는지 확인하는 작업을 기록했다.

https://spring.io/guides/gs/batch-processing/#scratch 참조

System.exit와 SpringApplication.exit는 배치가 실행되고 완료에 대한 조치 시 필요하다.

위 두개의 코드가 JVM 종료를 보장한다.

지금까지 spring.io에 있는 스프링 배치(spring batch) 예제를 같이 살펴봤다.

정말 기초적인 부분만 다룬 것으로 좀 더 전문적으로 공부를 한다면

spring.io 상단 메뉴 projects에서 Spring Batch를 보면 된다.

 

 

반응형