본문 바로가기
반응형

분류 전체보기714

TIL_211220 1. Facts(사실, 객관) - 개인프로젝트 로그 설정 추가하기 - 할인조직 설정 오류잡기(1) 2. Feelings(느낌, 주관) 개인프로젝트 로그 설정을 추가했습니다. xml 파일로 콘솔로그, 파일 생성시간 등을 설정했습니다. 기본적으로 logback으로 되어있었는데, log4j2로 사용하기 위해서 설정을 해주어야 했습니다. 따라서 이전에 단순하게 라이브러리를 가져다가 사용할때와는 달리, 어떻게 repository의 의존성이 구성되어 있는지 구체적으로 확인하는게 중요하다는 사실을 알게되었습니다. 할인조직 설정 오류잡기를 했습니다. 어떤 조직을 선택하든지 모든 조직을 선택하게 되어있었기 때문에, 개선했습니다. 먼저 DB에 저장되어 있는 0000의 조직들을 모든 조직들로 나누어 추가하도록 쿼리문을 만들.. 2021. 12. 20.
TIL_211216 1. Facts(사실, 객관) - 로그 개념 백기선 강의 듣기 - 할인등록 조직 선택 프로세스 확인 2. Feelings(느낌, 주관) 백기선 강의 로그개념을 들었습니다. 스프링 캠프에서 발표했던 세션 내용이었습니다. 기본적인 스프링 로그 라이브러리의 역사와 현주소를 알 수 있었습니다. log4j, log4j2와 logback등이 있고 logback은 지금 spring boot의 기본 설정입니다. 단순히 라이브러리가 중요한게 아니라 이 repository 안에 담겨있는 실제 core library등이 어떻게 구성되어있는지가 중요했습니다. 그래서 어떻게 slf4j와 log4j, logback과 연동하는지 어느 라이브러리를 추가하고 빼야하는지 알 수 있었습니다. 할인 등록 조직 선택 프로세스를 확인했습니다... 2021. 12. 17.
Spring framework 로그(log) 알아보기 [ 개요 ] 이번에 log4j2 보안 이슈가 터지면서 스프링 로그의 버전을 확인해보았다. 이슈가 터진 버전은 log4j2의 2.0버전 이상이었고 다행인지 불행인지 적용된 로그는 log4j 1.2 버전이었다. 이것도 처음에는 slf4j랑 헷갈려서 1.6.6 버전으로 착각했다. 아무래도 의존성에 slf4j-log4j12 를 보고 그냥 버전이 똑같겠구나 생각한 탓이다. 그만큼 스프링 로그에서 아는 것이 없다고 생각이 들어서 종류와 사용법을 공부했다. [ 목표 ] - 로그 개념 - 로그 종류인 log4j, logback, log4j2의 차이점을 비교한다. - 각 로그들의 spring boot와 spring legacy 의존성 설정을 알아본다 [ 본문 ] 로그는 특정 이슈를 분석하기 위해서 사용하는 도구로, 로그.. 2021. 12. 16.
TIL_211215 1. Facts(사실, 객관) - spring framework log 동작방식 공부 - spring jpa data 블로그 작성 - 프로젝트 로그 설정 2. Feelings(느낌, 주관) log이슈가 터지고, 이 기회에 좀 더 스프링에서 log가 어떤 방식으로 동작하는지 공부했다. 생각보다 한눈에 들어오는 구조가 아니어서 좀 더 흥미를 가졌다. 로그 종류도 여러개이고, 단순히 로그는 "여러분 System.out.println()을 대체해주는 기능입니다!" 정도로 표현할 수 없었다. SLF4J 인터페이스의 존재와 브릿지 역할 및 각 로그의 등장과 차이점이 있었다. log4j, logback, log4j2의 존재 및 의존성 설정을 보았고, 손쉽게 spring boot에서 설정도 알아보았다. 구체적인 개념은.. 2021. 12. 16.
JPA를 이용해 페이징 만들기 [ 개요 ] Paging은 각 회사마다, 각 프로젝트마다 환경에 맞게 구성되어 있다. 따로 페이징을 위한 클래스를 구분하기도 하고, 엔티티가 페이징 클래스를 상속받도록 만들기도 한다. 새로운 프로젝트를 짤 때 특이사항이 아니라면 다른곳에서 사용하던 것을 그대로 사용한다. 사실상 핵심 비지니스도 아니고 복사 붙여넣기를 많이하다보니 굉장히 귀찮고 번거로운 작업이다. 이 작업을 JPA Data가 제공하는 기능을 통해 간편하게 만들어 줄 수 있다. [ 목표 ] Spring JPA에서 제공하는 페이징 쿼리 기능을 시작으로 Data에서 제공하는 @PageableDefault 기능을 알아본다. 1. 순수 JPA 페이징 기능 이용하기 public List findByPage(int age, int offset, int.. 2021. 12. 15.
TIL_211214 1. Facts(사실, 객관) - 어드민 배송 스케쥴러 로직 개선 - Spring JPA 관련 블로그 글 2개 작성 - 프로젝트 페이징 개선하기 2. Feelings(느낌, 주관) 어드민 배송 스케쥴을 개선했다. 기존에 취소한 건이 어드민페이지에서 아직 배송상태가 취소완료로 바껴있지 않았다. 상담사 입장에서 상담결과에서 주문취소를 하면 배송 스케쥴이자동으로 "취소완료"를 알림하도록 했었다. 하지만, 경우에 따라 상담결과는 재컨택으로 수정하고, 취소상태가 설치취소로 기록되는 경우가 있다. 따라서 검색조건에 설치취소여부를 확인하도록 개선하였다. 혹여나 다양하게 케이스가 나뉠 수 있는 것에서 좀 더 신경써야한다고 생각했다. basentity와 basetimeentity2가지에 대해 글을 썼다. 개발자의 수고를.. 2021. 12. 15.
JPA를 이용해 History 테이블 자동 생성하기 개요 JPA를 이용해 생성시간, 수정시간, 생성자, 수정자를 자동으로 등록하는 방법을 공부했었습니다. 이번에는 JPA를 이용해서 특정 테이블을 저장할 때 히스토리를 같이 저장하도록 하겠습니다. history 테이블을 과거 이력을 확인할 때 용이합니다. 알림톡을 보냈거나, 사용자 권한이 변경된 기록들이 남아 있어 과거 이력을 추적할 수 있습니다. 만약 순수하게 만들어준다면 같은 데이터를 2번이나 save()해야 하는 번거로움이 있습니다. 하지만 @PrePersist, @PreUpdate를 사용하면 저장과 수정이후 JPA동작을 추가할 수 있습니다. 코드 작성하기 1. ApplicationContext로 직접 빈을 호출하는 유틸 클래스를 만든다. Entity에 Repository 주입이 불가능합니다. 따라서 .. 2021. 12. 14.
JPA를 이용해 자동으로 시간, 작성자 추가하기 개요 DB 테이블에는 생성시간, 수정시간, 작성자, 수정자의 정보가 공통적으로 많이 사용됩니다. 이 공통 칼럼은 핵심 칼럼들은 아니지만 매번 일일이 만들어주어야 합니다. 따라서, 굉장히 번거롭고 귀찮은 일인데, JPA에서는 자동으로 INSERT, UPDATE를 수행하도록 방법을 만들어 두었습니다. 자동 설정을 위한 Spring Data의 핵심은 "Audit"입니다. Spring Data는 Audit이라는 용어를 사용하여 어노테이션과 클래스들을 만들 수 있습니다. Audit의 사전 뜻은 "감시하다"입니다. 예를 들어, 경찰은 차량 검문소에서 음주여부 측정을 하고 음주가 적발되면 벌금을 부과합니다. 마찬가지로 JPA의 조회, 생성, 수정, 삭제 등을 감시하다가 저장을 했을 때, 생성시간, 수정시간을 추가합니.. 2021. 12. 14.
TIL_211213 1. Facts(사실, 객관) - 할인부서 선택하기 - 생성자 주입 공부 - @PostConstruct 공부 - 페이징 개선 2. Feelings(느낌, 주관) 할인가능 조직선택 기능 중 체크박스 선택 여부에 따라 데이터 추가 삭제를 만들었다. 이 넥사크로를 만지면서 도움이 되는 것은 재활용 가능 함수 만들기이다. 팀원 아무도 자신들이 한 화면에서 트랜잭션을 발생시키거나 반복이 있는 작업들을 함수로 빼서 다시 쓰지 않는다. 따라서 저장이면 저장 조회면 조회 모든 코드들이 길게 늘여져있어 몇천줄이 나오기도 한다. 그래서 이런 불편함을 줄이고자 반복되는 일은 함수로 빼기로 했다. 그결과 결과는 달라도 같은 행동을 하는 로직은 공통화를 했더니 훨씬 간편해졌다. 스프링 개념을 공부하였다. 생성자 주입과 관련해 .. 2021. 12. 14.
반응형