분류 전체보기
-
계층별, 기능별 패키지 구성JAVA/Java 2021. 12. 12. 17:45
프로젝트를 진행하다 보면 패키지를 어떻게 구성할 것인가에 고민이 생긴다. 프로젝트의 패키지 구성은 계층별, 기능별 구성으로 나눌 수 있다. 계층별 구성 자바 계층을 나누자면 web layer, service layer, repository layer로 나뉠 수 있다. ① Web Layer (Presentation Layer) : 컨트롤러와 뷰 템플릿 영역으로 외부 요청과 응답에 관한 영역 여기서 사용자에게 보여지는 영역과 정보를 주고 받기 위해서 DTO를 사용 한다. ② Service Layer (Business Layer) : 도메인모델과 요청의 적합성 검증 및 트랜잭션 관리 (비지니스 로직 구현 파트는 아니다) 상태와 행위를 갖는 Domain계층 에 메세지를 전달하는 역할을 수행한다. 프레젠테이션 영..
-
객체지향 생활 체조JAVA/Java 2021. 12. 12. 17:05
객체지향 생활 체조는 절차지향적인 생각에서 벗어나 객체지향 코드를 작성하기 위한 가이드 라인이다. 기존에 작성한 코드는 절차지향중심으로 작성된 부분이 매우 많았기에 공부하면서 수정하고자 한다. 객체지향 생활 체조 객체지향 생활 체조는 9가지의 지침으로 나뉜다. 1. 메서드 당 들여쓰기 한 번 유지 2. else 예약어 사용 금지 3. 모든 원시값과 문자열을 포장 4. 한 줄에 점을 하나만 찍기 5. 축약 금지(줄여쓰기 금지) 6. 모든 엔티티를 작게 유지 7. 2개 이상의 인스턴스 변수를 가진 클래스 사용 금지 8. 일급 컬렉션의 사용 9. getter / setter / property의 사용 금지 ① 메서드 당 들여쓰기 한 번 메서드의 응집력을 높이기 위해서 거대한 메소드를 사용하는 것을 지양한다. ..
-
Java Code Convention ( + Google Java Style Guide)JAVA/Java 2021. 12. 11. 17:16
자바로 코드를 작성할 때에는 규칙을 유지하여 코드를 작성해야 한다. Java Code Convention의 필요성 자바 코드 컨벤션(자바 코드 규칙)는 다른 개발자가 나의 코드를 보아도 한번에 이해하여 가독성을 높이도록 하고, 코드의 유지보수성을 높이기 위해서 사용해야 한다. 이는 코드의 유지보수를 위하여 필수사항이므로 코드를 작성할 때 꼭 지켜지도록 설정하자. 자바 코드의 스타일 가이드에는 구글 자바 스타일 가이드, 네이버 캠퍼스 핵데이 자바 코드 컨벤션, 오라클 자바 컨벤션 이 있다. Google Java Style Guide 자바 코드의 스타일 가이드중에서 가장 널리 사용되는 것은 구글의 자바스타일가이드이다. 구글 자바 스타일 가이드는 영문으로 작성되어 있는데 다음의 블로그에서 한글로 해석하여 설명..
-
연관 관계의 엔티티 기준으로 order 해서 데이터를 가져오고 싶을 때Spring 2021. 11. 6. 12:31
@OneToMany의 관계의 데이터에서 매핑된 엔티티의 아이디 기준으로 데이터를 가지고 오고 싶을 때가 있다. 이럴때 방법은 ①@query로 작성해주는 방법과 ②@OrderBy어노테이션을 통해서 작성할 수 있다. @Query 어노테이션을 통해 쿼리 작성 @Query(value = "SELECT DISTINCT p FROM Post p LEFT JOIN FETCH p.postImages i ORDER BY i.createdAt DESC", 연관관계의 엔티티의 칼럼을 기준으로 데이터를 가지고 오고 싶을 때 위와 같이 작성해주면 된다. @Query(value = "SELECT DISTINCT p FROM Post p LEFT JOIN FETCH p.likePosts ORDER BY SIZE(p.likePost..
-
react-google-login 을 통해서 구글 로그인 구현하기REACT 2021. 11. 6. 12:21
node js를 통해서 oauth2를 구현하는 방법도 있지만, 라이브러리를 통해서 react(프론트엔드)단에서 바로 구글 로그일을 구현하는 방법도 있다. React Google Login 라이브러리 설치 npm install react-google-login 먼저 해당 라이브러리를 설치해준다. 사용하기 import React from 'react'; import ReactDOM from 'react-dom'; import GoogleLogin from 'react-google-login'; // or import { GoogleLogin } from 'react-google-login'; //로그인 성공했을 떄 처리 함수 const successGoogle = (response) => { console...
-
idpiframe initialization failed 에러 발생 시.etc 2021. 11. 6. 12:12
구글 로그인 연동을 시도하던 중 idpiframe initialization failed가 발생하였다. 구글로그인을 시도하는 데 third party cookies enabled 설정이 이미 완료된 상태일 때 발생한다. 구글 크롬 설정 -> 고급 -> 개인정보 및 보안 -> 인터넷 사용 기록 삭제 -> 모든 쿠키와 캐시된 이미지 또는 파일 삭제를 통해서 해겨랗ㄹ 수 있다. (참고한 사이트) https://stackoverflow.com/questions/43964539/google-api-not-a-valid-origin-for-the-client-url-has-not-been-whitelisted-for Google API: Not a valid origin for the client: url has ..
-
디렉토리 구조 출력하고 싶을 때.etc 2021. 11. 6. 12:09
다음과 같이 디렉토리의 구조를 출력해서 보여주고 싶을 때, 📦App ├── 🗂backend │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com └── 🗂frontend └── src ├── images ├── index.css ├── index.js └── App.js 맥이라면 tree를 설치해서보여줄 수 있다. brew install tree tree -help 를 치면 사용법을 확인할 수 있고, 해당 프로젝트 디렉토리로 가서 tree를 누르면 모든 파일에 대한 구조를 확인할 수 있다. 특정 깊이만큼 (ex)디렉토리 -> 하위디렉토리 1단계로 하고 싶을때) tree -L 1 📦App ├── 🗂backend └── 🗂frontend 디렉토리만 출력하고 싶을 때..
-
multipart.MaxUploadSizeExceededException 오류 발생시Spring 2021. 11. 6. 11:56
기본으로 설정된 multipart파일의 사이즈보다 넣으려는 파일의 크기가 크기 때문에 발생한다. (디폴트 값은 1048576 bytes = 1MB) application.properties에 값 설정을 변경해줌으로서 해결할 수 있다. SpringBoot 2.x의 버전 spring.servlet.multipart.maxFileSize=10MB spring.servlet.multipart.maxRequestSize=10MB SpringBoot 1.4.x & 1.5.x의 버전 spring.http.multipart.maxFileSize=10MB spring.http.multipart.maxRequestSize=10MB SpringBoot 1.3.x혹은 그 이전 버전 multipart.maxFileSize=10..