목록2023/12 (21)
Skipalong's tistory
오늘은 스탠다드반 수업때 배운 CI/CD에 대한 내용을 정리해보겠다. CI(Continuous Integration) - 지속적인 통합 CI는 버그수정이나 새로운 기능들을 Git과같은 Repository에 주기적으로 build, test, merge되는 것을 의미한다. 협업을 할 때 여러가지 문제가 생길 수 있다. 서로 올린 코드가 conflict날수도 있고 테스트코드를 없이 검증되지않은 코드를 배포하게 될 수 도 있다. conflict가 나는 문제는 코드 변경사항을 주기적으로 빈번하게 병합을 하는 것이다. 또 테스트코드없이 검증되지않은 코드를 배포하게될 수 있는 문제점은 PR 단계에서 코드리뷰를 거쳐서 merge될 수 있게 하고, 코드리뷰를 통과하면 CI Script가 실행되게 하여 build, tes..
오늘은 JPA 심화 강의를 듣던 중 지금까지 무심코 사용했지만 자세한 내용은 잘 알지 못했던 부분에 대해 정리를 해 보겠다. 평소에는 Controller-Service-Repository 레이어 를 사용하면서 Repository는 간단하게 인터페이스로 만들어주고 JpaRepository를 상속받아주는것으로 구현을 하면 Repository의 필요한 기능들을 거의 다 사용가능해서 좀 더 알아보려고 하지 않았었다. 하지만 이번 JPA심화 강의를 들으면서 이것이 어떻게 가능한지, 실무에서는 어떻게 사용하는지 배운 것이 있어서 정리해보겠다. 우선 상속받는 JpaRepository가 어떤식으로 구성되어있는지를 알게 되었다. JpaRepository는 CrudRepository를 상속 받아 save, delete, ..
오늘은 개인과제를 모두 마무리 했다. 이메일, 페이징, 이미지 업로드 등 새로 시도해본 기능들이 많아서 의미있었던 것 같다. 그 중 오늘 새로 해 본 스케쥴링에 대해 정리를 해보겠다. 우선 요구사항은 수정된 지 90일이 지난 데이터를 삭제해주는 스케쥴러를 구현하는 것이었다. 작성한 코드는 이렇다. PostService에 deleteOldPosts라는 메서드를 추가하고 @Scheduled 어노테이션과 @Transactional 어노테이션을 추가해주고 @Scheduled 어노테이션에는 cron 형식으로 스케쥴이 언제 수행될 지를 정의해주었다. Cron방식은 Cron은 6자리로 이루어져 있고, 초 - 분 - 시 - 일 - 월 - 요일 순이다. ex) * * * * * * : 매초 실행 0 0 0/1 * * :..
오늘은 개인과제 중에 게시글 목록을 조회 하는데 반환값으로 그냥 게시글 목록이 아닌 page로 관리해서 설정값을 준뒤 정렬까지 해서 반환하는 부분을 처음 해 보았다. 우선 페이지로 관리하는 부분과 필드값을 지정해서 정렬하는기능은 이전에 강의를 들은 적이 있어서 생각보다 쉽게 구현을 했다. 우선 반환 타입을 Page 로 정하고 @RequestParam으로 몇 페이지를 볼 지 정하는 int page, 한 페이지에 몇 개의 게시글을 볼 지 정하는 int size, 어떤 필드로 정렬을 할 지 정하는 String sortBy, 내림차순으로 할 지 오름차순으로 할 지 정하는 boolean isAsc 를 파라미터로 받으면 Service단에서 받아온 파라미터를 가지고 Sort.Direction 을 선언해주고 Sort객..
오늘은 저번 Email 인증과정에서 알게 된 @PropertySource 와 @Value 에 관해 정리해두려고 한다. 전에 작성한 EmailConfig를 보면 클래스 상단에 @PropertySource(classpasth:application.properties)를 적어 놓고 필드 상단에 @Value("${}") 를 적어 놓은 것을 볼 수 있다. 먼저 PropertySource에 classpath : 값을 정의해놓은 파일을 명시해두고 @Value에 그 파일에 "${spring.mail.username}과 같이 정의된 값을 넣어주면 필드에 선언 해놓은 빌드에 해당 값이 들어가게 된다. 그렇게 선언해놓은 필드들을 이렇게 사용할 수 있게 된다. 이렇게 사용을 하면 개인정보나 설정정보등 보여주고 싶지 않은 정보..