리팩토링 할 코드 POST /api/v1/comment 댓글을 작성한다. 댓글 작성 API의 비즈니스 로직을 위한 전제 조건은 다음과 같다. 1. Client에서 댓글 작성을 요청한다. 2. 댓글의 구조는 원댓글-대댓글을 구별하기 위해, Comment Entity는 원댓글에 대한 필드인 OriginalComment 라는 Comment 를 가진다. @Transactional public void create(CreateCommentRequest request) { Users user = getUser(request); Posts post = getPost(request); Comment originalComment = null; if (request.getOriginalCommentId() != null)..
Dependency Injection Inversion of Control 이라고도 하는 의존성 주입(Dependency Injection) 객체가 사용하는 의존 객체를 직접 만들어 사용하는게 아니라, 외부에서 주입 받아서 사용한다. 때문에 객체는 자신이 어떤 구체적인 클래스에 의존하는지 알 필요 없이, 주입 받은 인터페이스나 클래스를 사용할 수 있다. 의존성 주입에는 3가지 방법이 존재한다. 1. @Autowired 2. Setter 3. Constructor 생성자 주입 그 중 1. @Autowired 는 권장되지 않는 방법으로, 인텔리제이에서도 Field Injection is not Recommended 라고 경고를 띄워준다. Field Injection is not Recommended. 필드 ..
3주간 프로젝트를 마치고 회고록을 씁니다. 앞으로 남은 과제들이 많아서 해당 부분들은 차차 업데이트 할 예정입니다. 개발 배경 “네카라쿠배 개발자와 함께 Spring으로 인스타그램 서버 만들기” 라는 딥다이브(클론 코딩 챌린지) 에 참여하게 되었다. 챌린지의 주된 목표는 인스타그램 API 개발과 함께 1. Spring Security & JWT 사용 2. CI/CD 파이프라인을 구축하여 자동화 배포하는 것이다. 진행 중인 하루냥 프로젝트에서 Spring Security 에 대한 이해도 부족, 젠킨스 자동화 배포 구현 실패 경험으로 스스로 완성해보자는 목표가 있었다. 구현기간 23.03.24 ~ 23.04.13 (3주) 깨달은 점 강의로만 보던 스프링 시큐리티는 직접 구현하다보니 생각보다 더! 많이! 복잡..
✔ ORDER BY SELECT로 데이터를 조회할 때, ORDER BY를 추가하여 정렬 기준으로 삼고자하는 컬럼명을 제시해서 정렬할 수 있다. ✔ ORDER SIBLINGS BY 일반적인 정렬이 아닌, 계층 내에서 정렬 할 수 있다. 오라클 계층형 쿼리문 ( connet by ) SELECT 조회하고자 하는 테이블의 컬럼 FROM REPLY WHERE 게시글의 유형구분 = 2 AND 해당 게시글의 글번호 = #{게시글번호} -- 추가적인 조건들 START WITH 참조하는댓글번호 = 0 -- 부모의 시작 조건 CONNECT BY PRIOR reply_no = 참조하는댓글번호 -- 자신값과 부모값을 비교 ORDER SIBLINGS BY 작성일 DESC; -- 계층내에서 정렬: ORDER SIBLINGS B..
자바스크립트, 제이쿼리와 Awesomefont로 별점 선택하는 기능을 구현했습니다. See the Pen StarRating by daeun lee (@daeuun) on CodePen. ✔ Awesomefont CDN코드 더보기 1. 가장 기본적인 단계 : script에 작성된 그대로 별점을 css로 표시하기 (사용자 선택 X) html Awesomefont로 아이콘을 가져와서 css와 javacript로 색을 입히는 과정을 진행할 예정이다. 여기서 이것이 별모양 아이콘이다. 별점 표시하기 css 아이콘에 기본 색상을 지정한다. i{color:#dedede;} script $(function(){ /*.rating마다 할 일*/ var rating = $('.review .rating'); /*each..
summernote는 bootstrap4버전과 css를 수정하기 편한 라이트 버전이 있다. 부트스트랩을 사용하지 않는 lite버전으로 summernote를 사용해보자. 어려울까봐 걱정했는데 생각보다 사용법이 쉬워서 금방 적용할 수 있었다! 1. 다운로드 Download compiled 버튼을 눌러서 다운로드 받는다. 2. 프로젝트에 파일 배치하기 다운로드 받은 dist의 압축 풀면 다음과 같은 파일 구조가 나온다. 사용할 프로젝트의 resources폴더에 폴더 이름을 summernote로 지정하고, font폴더 lang폴더의 KR파일 summernote-lite.css summernote-lite.js 네종류의 파일을 붙여넣는다. 적용결과 3-1. 헤더에 라이브러리 추가하기 3-2. html Hello ..
See the Pen tab menu by daeun lee (@daeuun) on CodePen. html 탭_1 탭_1 탭_2 탭 내용 1번입니다. 탭 내용 2번입니다. 탭 내용 2번입니다. css .container{ width:500px; margin: 0 auto; } ul.tabs{ margin: 0px; padding: 0px; list-style: none; } ul.tabs li{ display: inline-block; background: none; color: #222; padding: 10px 15px; cursor: pointer; } ul.tabs li.current{ background: #ededed; color: #222; } .tab-content{ display: no..
프로젝트 기간 2021/06/22 ~ 2021/08/20 프로젝트 이름 Book For You 개발환경 Language : Java (OpenJDK 8) DBMS : Oracle Prontend : HTML5, CSS3, JavaScript, jQuery, Bootstrap Server : Apache Tomca (8.5) Server Programming : JSP/Servlet, AJAX Framework : Spring, MyBatis 프로젝트 관리도구 : Mavern IDE : Eclipse STS3, sqldeveloper, VS Code Modeling Tool : StarUML, erdcloud, 카카오오븐 형상 관리 : Github 사용 API : i'mport, summernote, 💡기..
- Total
- Today
- Yesterday
- port
- 추상클래스
- Cannot construct instance of
- array
- 스프링오류
- Kotlin
- Spring Security
- 오블완
- ChatGPT
- JPA
- bucket4j
- MongoDB
- Java
- MultipleBagFetchException
- jvm warm-up 전략
- 배열
- redisson 분산락
- n+1
- spring boot 3
- addFilterBefore
- FetchJoin
- 스프링 스케줄링
- 티스토리챌린지
- Linux
- checkout
- junit5
- dto 클래스 생성자
- QueryDSL
- 자바 어플리케이션 실행 과정
- Git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |