Runjob(런잡 프로젝트) 10

[SpringBoot + Kotlin] Querydsl 적용 및 DB 관리

들어가며 - 기존에 사용 했었던 JPA 의 기본적인 메소드인 find, save 등 만으론 원하는 모든 기능을 구현 하기는 힘들다. - Querydsl 을 사용하면 이러한 점을 보안 할 수 있다. - SQL 의 쿼리문과 유사 하기 때문에 구현 하고자 하는 대부분의 기능을 구형 가능 하다. Build.gradle 파일 수정 - querydsl 을 사용하기 위해 필요한 플러그인과 설정들이 필요하다. - 다음과 같이 설정 하면 된다. - 설정 후 run 을 해 준다.(dependencies 에 kapt 추가시 에러가 날 수 있는데 그럼 해당 코드를 빼고 run 을 한 후 추가 하면 된다.) //biild.gradle.kt plugins { id("org.springframework.boot") version ..

[SpringBoot + Kotlin] Scheduled DB 의 업데이트 날짜와 비교해서 실행

들어가며 - 정보중 정보를 업데이트 한 날짜는 생각보다 중요하다. - 앞서 진행 한 Scheduled 방식은 서버가 잠시 중단되거나 모종의 이유로 다시 시작되었을때 내가 원하는 대로 돌아가지 않을 수 있다. - 이러한 상황을 방지 하고자 DB 에 업데이트 날짜와 시간을 기록하고 이와 비교하며 업데이트 하는 것이 좀더 안전하다 볼 수 있다. - 이번 시간에는 새로 짜면서 글을 쓰기엔 조금 복잡 하니 원래 하던 프로젝트의 코드 일부분을 가져와 설명 하도록 하겠다. ChkNeedUpdate.kt - Time 을 포멧팅 해주는 함수 - DB 에 저장 되었던 시간과 현재 시간 사이의 시차를 계산하여 업데이트 할 필요가 있는지 확인해 주는 함수 이다. - 같은 방식으로 원하는 시간 차이(1초, 10분, 12시간 ...

[SpringBoot + Kotlin] @scheduled로 스케줄 처리 및 corn 설정

들어가며 - 앞서 했었던 영화 정보나 상영중인 영화 리스트 같은 경우는하루에 한번씩 최신화 해 주어야 하는 기능이다. - 이처럼 프로그램을 짜다 보면 따로 실행 명령을 하지 않아도 주기적으로 자동으로 실행 해 주었으면 하는 기능 들이 있다. - 이러한 문제를 해결 할 수 있는 방법이 바로 스케쥴러를 사용하는 것이다. @Scheduled 사용법 1. Scheduled - 스케쥴링을 사용하고자 하는 클래스 위에 @EnableScheduling 을 추가한다. - 주기적으로 실행하고자 하는 메소드 위에 @Scheduled(cron = "~~") 을 붙히면 된다. 2. cron - 이때 각 자리에 [*] : 모든 조건 [?] : 날짜와 요일에서 설정값이 없을때 [-] : 범위를 지정 할 때 [,] : 여러 값을 ..

[SpringBoot + Kotlin] Jsoup 을 이용한 웹 크롤링

들어가며 - 전 시간에 API 호출을 이요하여 원하는 데이터를 수집 하여 보았다. - 하지만 모든 사이트에서 데이터를 호출하는 API 를 제공 하는 것은 아니다. - 이런 경우에 사용할 수 있는 방법에 웹의 HTML 에 있는 데이터를 직접 가지고 오는 방법이다. 크롤링 하고자 하는 웹페이지의 개발자 모드 열기 - 우선 당연한 이야기지만 크롤링 하고자 하는 웹 페이지를 열어야 한다. - 이번 시간에는 저번시간에 진행 했던 영화 정보를 크롤링을 통해 가져 오는것을 진행 해 보겠다. - 우측의 연한 파란 부분이 좌측 웹 사이트의 영화 정보부분임을 알 수 있다. - 또한 내부의 "inner_cont" 가 영화 정보를 답고 있음을 알 수 있다. 파일 생성 - 우선 크롤링코드를 적을 파일을 생성 해 준다. jsou..

[SpringBoot + Kotlin] Jsoup을 이용하여 프로그램에서 API 호출

들어가며 - 앞서 정해진 데이터를 DB 에 insert 하였다면 이제는 내가 필요로 하는 데이터를 DB 에 넣어야 한다. - 내가 한 프로젝트에선 여러 영화 사이트의 API 를 사용하여 영화 정보를 수집 저장 하였다. - 이번 시간에는 GET, POST 방식으로 API 를 호출 하는 방법을 알아 보도록 하겠다. Build.Gradle 에 Jsoup dependencies 추가하기 - 앞서 maria DB 의 dependencies 를 추가 한 것 처럼 Jsoup 도 사용하기 위해 추가해 주어야 한다. - 다음 코드를 build.gradle 의 dependencies 에 추가 해 준다. - 그 후 build.gradle 을 run 해 준다.(우클릭 후 run) implementation("org.jsoup..

[SpringBoot + Kotlin] JPA Repositor를 이용해 DB 에 원하는 데이터 저장

들어가며 - DB 를 생성하였으니 이제 DB 에 원하는 값을 넣을 수 있어야 한다. - 여기서는 Spring FrameWork 의 JPA Repository를 이용하여 DB 를 관리 할 것이다. 미리보기 - 실제 과제에선 다음과 같은 결과가 나왔다. - 다음 영화 api 를 이용해 영화 데이터를 가져 오고 원하는 컬럼에 맞게 가공하여 저장 하였다. DB 에 사용할 table 만들기 - Intellij 우측의 "Database" -> 사용할 DB 에서 우클릭 -> New -> Table 을 눌러 사용할 테이블을 생성후 이름 입력 - "columns", "keys" 등을 우클릭 하여 필요한 항목을 생성 한다. - 만약 SQL 문이 익숙한 사람이라면 DB 를 우클릭 한 후 "Query SQL" 을 클릭해 SQ..

[SpringBoot + Kotlin] Controller 를 통해 request 보내기(실행하기)

들어가며 - 프로그램을 짜면 재대로 작동 하는지 테스트를 하면서 개발 해야 한다. - 지금은 SpringBoot 와 Kotlin 을 이용해서 백앤드를 짜고 있으니 나의 서버에 requset 를 보내 실행 하는 방법을 알아야 한다. - SpringBoot 의 RestContoller 를 이용해서 이를 해결 할 것이다. 미리보기 - 실제 과제에서 사용한 controller 의 일부이다. - 만약 getMovieList 를 실행 하고 싶다면 [주소(ex) http://localhost:8080)/api/movieinfo 와 같이 url 에 입력 하면 실행 된다. - {movieId} 처럼 변수가 들어갈 수도 있다. Controller 생성 - 우선 controller 는 Controller 디렉토리에 저장 하..

[SpringBoot + Kotlin] DB 생성하고 연동(Intellij 사용)

들어가며 - 실제 프로젝트를 진행 할 때는 나스에 DB 를 설치 하고 연동 해서 했지만 지금 사용하기엔 어려움이 있기 때문에 virturebox 에 DB 를 설치 하고 연동 하는 작업을 해 보겠다. Maria DB 설치 - 우분투의 버전은 20.04 버전을 사용 하였다(uname -a) 명령어를 통해 확인 가능 - 우선 우분투 update 를 통해 패키지 목록을 최신화 시켜 준다. - install 을 통해 mariaDB 를 설치 해 준다.(sudo apt install mariadb-server) - 이때 sudo 는 관리자 권한으로 실행 한다는 뜻이다. Maria DB 보안 설정 - Maria DB 의 계정과 보안 설정을 위해 다음 명령어를 실행 한다. (sudo mysql_secure_install..

[SpringBoot + Kotlin] 프로젝트 디렉토리 구조

들어가며 - 모든 파일을 한 디렉토리에 넣어 관리 해도 프로그램을 구동 시키는데는 문제가 없다. - 하지만 계발이 계속 되고 후에 추가 보수를 할 때 위와 같은 방법은 수정해야 할 파일을 찾는데 어려움을 준다. - 따라서 각 파일은 기능 별로 다른 디렉토리에 보관하는 것이 계발을 보다 수월하게 해 준다. 디렉토리 구조 - Controller : SpringBoot 의 "Controller" 역할을 수행하는 파일들을 모아 두며, 사용자의 요청에 따라 어떠한 메소드나 기능을 mapping 시켜 줄지 결정 - Entity : DB 와 의 연결을 위해서 DB 에 쓰일 필드와 여러 엔티티간 연관관계를 정의 data class 를 만들어 저장 - Repository : Entity 패키지 내에서 정의된 Entity..

[SpringBoot + Kotlin] 개발 환경 구축(프로그램 생성)

들어가며 - 아는 사람과 프로젝트를 같이 하게 되어 정리 하고자 블로그에 글을 쓰게 되었다. (https://github.com/madlimeus/ThreeMovie)[프로젝트 깃허브 주소] - SpringBoot 라는 프레임 워크와 kotlin 을 사용하여 프로젝트를 진행 하였다. - 다른 영화관 API 와 크롤링을 사용하여 리뷰, 순위 , 평점 등을 저장 하고 각 영화관의 상영 시간을 한번에 보여 주어 보다 예매가 편리하도록 도와주는 페이지를 완성 하는것이 목표이다. SpringBoot 개발환경 구축 1. Intellij 프리미엄 버전 활용 - Intellij 의 프로젝트 생성 기능을 사용하면 프로젝트를 쉽게 생성 할 수 있다. - "New Project" 를 선택 하고 다음 화면에서 Spring I..