Dev/Spring Boot (37) 썸네일형 리스트형 [Spring Batch] 5.0 버전에서 달라진 점과 기본 예제 진행하던 프로젝트에서 공용충전기의 대한 정보 업데이트를 위해 주기적으로 공용충전기의 대한 정보를 다시 받아와야하는 작업을 진행하기 위해 스프링배치를 공부하게 되었다.Spring Batch스프링 배치는 로깅, 추적, 트랜젝션 관리, 작업처리 통계, 반복 작업 자동화 등 많은 기능을 제공하는 스프링 기능을 제공한다.스프링배치는 Job과 Step을 관리하는 기능을 제공하며 실제로 실행하는 것은 스케줄러이다.Srping Batch 5.0 에서 달라진 것들Spring Batch 5.0 Migration Guide많은 초보 개발자들이 ChatGPT와 블로그 예제를 보면서 코드를 작성할 것이다.현재 많은 스프링배치 포스팅들은 이전 버전을 사용하고 있어서 지금은 사용하지 못하는 것이 많다.@EnableBatchProc.. [SpringBoot] Github Action을 사용한 BlueGreen배포 1. Github Action에서 클라우드의 shellscript 실행하기 이전까지 jar파일을 클라우드 서버에 전송하는 것 까지 진행시켰다. 이제 서버에 전송 후 이전에 쓰던 것을 끄고 새로운 것을 켜주는 쉘스크립트를 작성해야한다. 다만 그 전에 쉘스크립트 파일을 실행하는 로직을 github action에 추가해주어야한다. folder_path="/home/shellScript/newFolder"mkdir $folder_path 쉘스크립트는 위와 같이 매우 간단하게 새로운 폴더를 하나 만드는 것으로 하였다. # 쉘스크립트 파일 실행- name: Execute shell script on remote server env: SSH_PASSWORD: ${{ secrets.SSHPASSWORD }} .. [SpringBoot] Github Action을 사용한 jar빌드 후 전송 github action은 push, merge, pull request 등의 동작이 행해졌을 경우 원하는 동작을 자동으로 동작하도록 스케줄링 해둘 수 있는 서비스이다. 이것을 사용하면 CICD 배포를 구현할 수 있다. 여기서는 모두 github action의 대한 기본적인 사용법은 알고 있다고 생각하겠다. 나는 푸쉬한 파일을 jar로 빌드하여 내 클라우드 서버에 scp로 보내는 동작을 수행할 것이다. 플로우는 아래와 같다. 1. Action action 할 레포지토리의 action에서 java with gradle 을 가져오자. 이것을 수정해서 위 플로우를 완성할 것이다. 여기서 설정파일을 수정해도되지만, 커밋하고 편집기에서 편집하도록 하자. 파일이름은 마음대로 해도된다. 난 Create Jar .. [Spring Security] 수동 로그인 구현하기 스프링 시큐리티를 사용해 프로젝트를 진행하던 중 카카오로 로그인 요청을 했을 때 회원가입이 안되어있으면 회원 가입을 하고 아니면 바로 로그인이 되는 기능을 구현하였다. @GetMapping("/auth/kakao/callback") public String kakaoCallBack(String code, HttpServletRequest request) throws ParseException { String username = loginService.requestKakaoToken(code); loginService.forcedLogin(username, request); return "redirect:/"; } 먼저 카카오 콜백 메소드이다. 유저네임 = 이메일을 카카.. [Spring Security] 스프링시큐리티의 기본 로그인을 사용하지 못했던 문제 스프링 시큐리티는 기본적으로 /login 에서 기본 로그인 화면을 지원한다. 그래서 난 SecurityFilterChain을 구성할 때 http.httpBasic(AbstractHttpConfigurer::disable) .csrf(AbstractHttpConfigurer::disable) .userDetailsService(userDetailService) .authorizeHttpRequests(auth -> auth .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() .. [JPA] 인덱싱을 통한 SELECT 성능 향상 DB를 최적화함에 있어서 인덱싱은 가장 기본적인 방법이자 효과적이다. 인덱싱은 B+트리를 통해 SELECT 기능을 향상시키지만 그와 동시에 입력 및 수정 삭제의 기능은 떨어진다. 그러나 사용자가 건들일 필요가 없기 때문에 삽입 삭제가 잘 이뤄지지 않는 데이터라면 충분히 효과적이다. @Table(name = "Course_Table", indexes = @Index(name = "idx_name", columnList = "name"))public class course { @Id private String crsIdx; @Column(name = "NAME") private String name;} 인덱싱을 거는 방법은 간단하다. JPA를 사용한다면 Table 어노테이션에 inde.. Java로 문자열 xml 파일 파싱 xml 형태이지만 문자열로 저장된 코드에서 원하는 값을 파싱해 사용해야하는 상황이 발생했다. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new InputSource(new StringReader(xml.toString()))); document.getDocumentElement().normalize(); NodeList tagLis.. Spring Boot JPA - BufferedReader로 CSV 파일을 읽어 DB에 저장하기 BufferedReader자바에서 입출력을 빠르게 받을 때 많이 사용했던 버퍼리더, 정확히 버퍼 리더가 무엇인가버퍼란 어떤 데이터가 전송 될 때 일시적으로 저장되는 영역이다. (캐시와는 다르다.) 어떤 데이터들을 한 번에 묶어서 전송하기 때문에 전송이 빠르다. BufferedReader br = Files.newBufferedReader(Paths.get(filePath));map을 사용해 임시 값 저장csv파일은 ,로 구분된 정보를 엑셀 형태로 보여주는 파일이다. 그러니까 텍스트로 옮기면이름, 나이, 사는곳김, 20, 서울박, 21, 부산이런식으로 구성되어 있다. 버퍼리더로 값을 받으면 한 행씩 정보를 받지 열(col)씩 받지 않기 때문에 맨 위 헤더들을 key값으로 갖는 hashm.. 이전 1 2 3 4 5 다음 목록 더보기