전체 글
-
-
Spring cache redisProgramming/Spring boot 2021. 8. 31. 17:13
cache란? 데이터나 값을 미리 복사해 놓는 임시 저장소를 가리킨다. 이러한 cache는 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. cache에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근 가능하다. 정리하면 디스크에 접근하여 정보를 얻어오는 것 보다 빠른 속도로 데이터 조회가 가능하다. 하지만 인메모리로 설정할 경우 휘발성이기 때문에 서버가 다운되면 데이터는 사라질 수 있다. 즉 영구적으로 보관하기 위한 용도가 아니다. 그래서 이걸 왜? 만약 메인 페이지에 랭킹과 관련된 데이터를 매번 조회한다고 가정하면 해당 웹 서비스에 접속할 때 마다 랭킹 정보들을 데이터베이스에서 조회할 것이..
-
[JPA] JPA 양방향 연관관계 세팅 및 주의사항Programming/JPA 2021. 8. 28. 19:28
JPA 양방향 연관관계 세팅 및 주의사항 Spring Data JPA와 JPA 양방향 연관관계를 세팅하고 사용 시 주의할 점에 대해서 정리하였다. 밑은 간단한 예제 코드를 준비하였다. User는 다양한 Knowledge을 등록할 수 있다. 정리하면 User는 N개의 Knowledge를 등록할 수 있다고 가정한다. 두 엔티티 간의 관계는 1:N이다. 소스 코드 User.java @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "user_id") private Long id; ..
-
[MAC] mac에서 실행중인 포트를 죽이는 방법카테고리 없음 2021. 8. 14. 23:09
mac에서 실행중인 포트를 죽이는 방법 로컬 서버에서 스프링 부트를 활용하여 작업 중에 비정상적으로 종료되어 8080 포트를 점유하는 경우가 생기게 되었다. PID 조회하기 우선 포트 번호를 활용항 PID(Process ID)를 조회한다. $ sudo lsof -i :8080 :뒤에 원하는 포트 번호를 입력하면 해당 포트에 실행 중인 프로세스의 정보가 출력된다. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 29620 hyeonic 82u IPv6 0x3669400aa808a88d 0t0 TCP *:http-alt (LISTEN) 없다면 아무것도 출력되지 않을 것이다. 참고로 lsof는 List Open Files의 준말이다. 프로세스 종료하기 이제 ..
-
[Java] DTO와 VO 그리고 EntityProgramming/Java 2021. 8. 1. 18:45
DTO와 VO 그리고 Entity DTO Data Transfer Object로 계층(Layer) 간 데이터 교환을 위해 사용하는 객체이다. 주로 데이터 교환을 위해서만 사용하기 때문에 특별한 로직을 가지고 있지 않고 getter/setter 메소드만 갖는다. public class UserDto { private String name; private int age; public UserDto(String name, int age) { this.name = name; this.age = age; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getA..
-
[git, github] github-flow 정리Programming/git, github 2021. 8. 1. 14:25
introduction 이번에 프로젝트를 진행하면서 github-flow 적용하기 위해 간단히 관련 내용을 정리해보려 한다. github-flow git 브랜치 전략 중 하나로, 이전에 작성한 git-flow보다 더 간단하게 적용이 가능하다. git-flow에서는 각 역할에 맞게 브랜치를 생성하고 적용해야 했다. 하지만 github-flow에는 별도의 브랜치가 분리되어 있지 않다. 또한 git-flow 방식은 github에서 사용하기엔 복잡한 부분이 많았다. 위 사진과 같이 main 브랜치를 기준으로 모든 브랜치가 뻗어 나간다. 이런한 main 브랜치는 항상 최신의 상태이며, stable한 상태로 배포되는 브랜치이다. 새로운 작업을 시작하기 위해서는 브랜치의 이름을 자세하게 작성하여 github에서 확인..
-
[Spring Security] Spring Security + JWTProgramming/Spring Sercurity 2021. 7. 31. 21:04
Spring Security + JWT Spring boot + Security + JWT를 활용하여 회원가입/로그인 로직 및 권한 체크 기능을 구현하였다. 추가적인 기능은 구현하지 않고 오로지 user 도메인을 활용하여 회원가입과 로그인, 토큰 발급을 진행한다. [무료] Spring Boot JWT Tutorial - 인프런 | 강의 Spring Boot, Spring Security, JWT를 이용한 튜토리얼을 통해 인증과 인가에 대한 기초 지식을 쉽고 빠르게 학습할 수 있습니다., [사진] 본 강의는 Spring Boot, Spring Security를 이용해서 JWT 인증과 인가를 쉽 www.inflearn.com 전반적인 로직과 코드는 위 강의를 참고하였고, 필요에 따라 수정하여 재반영 하였다...
-
[Spring Security] Spring Security 간단 정리Programming/Spring Sercurity 2021. 7. 27. 15:11
Spring Security Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크. Spring Security는 '인증'과 '권한'에 대한 부분을 Filter의 흐름에 따라 처리한다. Filter이기 때문에 Dispatcher Servclet으로 가기 전에 적용 된다. 이러한 Spring Security는 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서 보안과 관련된 로직을 일일이 작성하지 않아도 된다는 장점이 있다. 인증(Authorization)과 인가(Authentication) 인증 Authentication: 해당 사용자가 본인이 맞는지를 확인하는 절차 인가 Authorization: 인증된 사용자가 요청한 자원에 접근 가능..