본문 바로가기

전체 글236

Session, cookie, token 차이 요약 Session / Cookie 계정정보를 header에 넣는다. 세션 저장소에 정보를 저장한다. session은 서버에서 보관, cookie는 클라이언트에서 보관 발급 및 사용 절차 사용자가 로그인한다. 서버에서 사용자 정보를 이용하여 고유ID를 발급해 세션 저장소에 저장하고 그와 연결되는 세션ID를 만들어 클라이언트로 응답한다. 클라이언트는 2에서 받은 세션ID를 쿠키에 저장해 요청이 필요할 때마다 헤더에 넣어 보낸다. 서버는 쿠키를 받아 세션저장소에서 확인 후, 요청된 데이터를 응답한다. Token JWT(Json Web Token)은 인증정보를 암호화시킨 토큰을 의미한다. 사용자는 Access Token을 헤더에 실어 서버로 보낸다. 토큰은 마치 임시비밀번호처럼 동작하며, 제한 기간 내에 사용.. 2022. 7. 8.
[JPA] Entity Custom ID Generator 만들기 JPA에서 기본 시퀀스가 아닌, 개발자가 임의로 커스텀하여 아이디를 생성하는 방법 요약하자면, IdentifierGenerator 인터페이스를 구현해서 configure(), generate() 두 개의 함수를 구현 한다. configure - 외부에서 커스텀 ID 구현을 위해 설정한 파라미터 값을 가져와서 내부에 선언한 변수에 할당하는 역할(prefix, suffix 등등) generate - 커스텀한 ID를 리턴하는 역할. 보통 DB에서 시퀀스를 가져와 사용자가 지정한 형태를 입히고 리턴한다. 사용할 엔티티에 아래와 같은 형태로 GenericGenerator에 위에서 만든 클래스를 strategy에 넣고 이름을 지정한다. 파라미터로 사용자 임의 데이터를 넣는다. name이 key값으로 활용된다. Ge.. 2022. 7. 7.
@ExceptionHandler Controller 계층에서 발생하는 에러나 Exception을 잡아서 처리해주는 핸들러 역할을 한다. Service나 Repository 계층에서 발생하는 것들은 잡지 않는다. 자세한건 https://velog.io/@kiiiyeon/%EC%8A%A4%ED%94%84%EB%A7%81-ExceptionHandler%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC [스프링부트] @ExceptionHandler를 통한 예외처리 @ExceptionHandler는 Controller계층에서 발생하는 에러를 잡아서 메서드로 처리해주는 기능이다.Service, Repository에서 발생하는 에러는 제외한다.간단한 예시부터 살펴보자.이렇게 @Con.. 2022. 7. 2.
DTO vs VO vs Entity DTO (Data Transfer Object) View와 Controller 사이에서 데이터 전송에 사용되는 객체. Setter와 Getter를 가지며 비즈니스 로직은 넣지 않는다. VO (Value Object) 주소값이 아닌 실제 들어있는 값만 비교한다. 가령 Money라는 속성이 같은 10000원이라면, 돈의 발행번호가 서로 다르더라도 같다고 판단한다. equals()와 hashcode() 를 오버라이드 해야한다. 하지 않으면 에러 발생한다. Getter만 있고 Setter는 가지지 않는다.(생성자에서 값 할당) Entity 실제 DB 테이블과 값이 매핑되는 클래스이다. 이를 기준으로 테이블이 생성되고 스키마가 변경된다. 따라서 절대로 Entity를 값을 요청하거나 응답하는 클래스로 사용해서는 안.. 2022. 7. 2.
JIRA와 Bitbucket을 통해 개발 추적 http://pseg.or.kr/pseg/index.php?mid=atlassian&document_srl=7134&listStyle=viewer Atlassian 솔루션 - JIRA와 Bitbucket을 통해 이슈로부터 개발 추적 이 문서는 JIRA와 Bitbucket을 이용하여 이슈로부터 개발을 추적하는 예시를 보여준다. 시나리오 버그로부터 이슈를 추적하기 위한 간단한 시나리오는 다음과 같다. 1. 버그 이슈 등록2. 버그를 pseg.or.kr 요약 1. jira 에 이슈를 만든다. 2. 이슈 수정을 위한 브랜치를 생성한다.(feature/~~~~~) 3. 생성한 브랜치에서 이슈를 수정하고 commit, push한다. 4. bitbucket에서 PR(Pull Request)를 생성하고 리뷰어를 지정하.. 2022. 6. 21.
[SpringBoot] annotations 의미를 간략하게 기술 @Data Lombok을 설치하면 사용할 수 있는 어노테이션. 아래 기술하는 것들을 한 번에 설정할 수 있다. @toString - 해당 메소드의 모든 필드를 출력하는 toString 메소드를 생성합니다. @EqualsAndHashCode - hashcode와 equals 메소드를 생성합니다. @Getter / @Setter - 말 그대로 getter함수와 Setter 함수를 생성합니다. @NoArgsConstructor - 파라미터를 요구하지 않는 생성자를 생성합니다. (access =AccessLevel.PROTECTED) 를 추가하게 될 경우 기본생성자의 접근 권한을 protected로 제한하게 됩니다. @RequiredArgsConstructor - 파라미터를 요구하는 생성자를 생성합니다. @Al.. 2022. 6. 20.
[SpringBoot] Path with "WEB-INF" or "META-INF" 메세지 발생하며 jsp 파일 404 not found 현상 Path with "WEB-INF" or "META-INF" 위 메세지가 warning으로 발생하며 페이지를 찾지 못한다. 원인은 스프링부트의 embed-Tomcat 에 jsp 를 처리하는 서블릿이 없기 때문이다. 디펜던시를 하나 추가하면 해결된다. org.apache.tomcat.embed tomcat-embed-jasper 2022. 6. 17.
AWS 서비스들에 대한 정리 Route53 https://brunch.co.kr/@topasvga/49 https://brunch.co.kr/magazine/devops 대분류 소분류 내용 개요 AWS에서 제공하는 DNS(Domain Name Service) 일반 DNS의 이해 도메인을 IP로 변환하여 IP 네트워크 통신하여 목적지 IP를 찾아가는 과정 (http://naver.com > 202.222.xxx.xxx) 일반 DNS와 Route53의 차이점 Route53에서 네임서버 등록 시, 순서가 다름 일반적으로 도메인 등록 시 네임서버를 지정하는데 Route53에서는 할당 후 네임서버 정보를 도메인 등록 대행기관(가비아, 아이네임즈 등) 사이트에 접속해 네임서버를 지정 Route53은 Public host zone과 Privat.. 2022. 4. 7.
Simple Text Editor Implement a simple text editor. The editor initially contains an empty string, . Perform operations of the following types: append - Append string to the end of . delete - Delete the last characters of . print - Print the character of . undo - Undo the last (not previously undone) operation of type or , reverting to the state it was in prior to that operation. Example operation index S ops[index.. 2022. 3. 31.