Spring boot

·Spring/Spring Boot
00. 서버에서 클라이언트로 이벤트를 보내야 하는 필요성서버에서 클라이언트에게 이벤트 처리를 해주어야 하는 경우는 생각보다 쉽게 떠올릴 수 있다. 예를 들어 네이버 카페에서의 채팅 기능을 생각해보자.클라이언트가 특정 유저에게 채팅을 보내면, 해당 정보는 상대방에게 바로 가지 않고 먼저 서버로 전송된다.이후 상대 유저가 채팅 내용을 얻기 위해서 서버에 해당 채팅 내용을 요청해야한다.여기서 한가지 쟁점은 상대 유저는 자신에게 채팅이 온 사실을 어떻게 인식하는가? 이다.이러한 상황에서는 서버에서 클라이언트에게 이벤트를 전송해야한다.서버가 채팅 전송 요청을 받으면, 상대 유저에게 채팅이 왔다는 이벤트 처리를 해주면 위의 문제가 해결된다.이 외에도 푸쉬알림, 메일, 공지사항 등 다양한 기능에서 서버의 이벤트 처리..
·Spring/Spring Boot
01. ORS란?기본적으로 동일 출처 정책(SOP, Same-origin policy) 웹 통신 시, 다른 도메인 주소끼리는 통신을 하지 못한다.이때, 다른 도메인 주소 끼리 통신을 하기 위해서는 CORS를 통해야한다.이때 CORS(Cross-origin Resource Sharing, 교차 출처 리소스 공류)는 서로 다른 도메인끼리 자원을 요청할 수 있도록 허락을 받는 체제를 의미한다.02. Spring boot에서 CORS 설정하기기본적으로 스프링부트에서 CORS를 설정하는 방법은 1. 전역적으로 설정하기, 2. 각 Controller에 직접 설정하기 가 있다.여기서는 전역적으로 설정하는 방법을 사용했다.@Configurationpublic class WebConfig implements WebMvc..
H2 DB를 사용하다보면, Embedded, Server 요런 설정을 본 적이 있을 것이다.필자 같은 경우는 MySQL을 주로 사용하다가, H2를 사용해보니 위의 개념이 너무 헷갈렸다. 그래서 해당 내용에 대해 정리해 보고자 한다.01. Server 모드이미지 출처서버 모드의 경우에는 Java 애플리케이션이 실행되는 프로세스와, H2 DB가 실행되는 포트가 완전히 구별된다.이때 두 프로세스 사이의 연결은 TCP/IP 방식으로 된다고 한다.이때 서버모드로 h2 DB를 사용하기 위해서는, 별도의 프로세스를 실행시켜야 하므로 H2 Console을 다운 및 실행시킨 상태로 Java 애플리케이션을 실행해야한다.서버 모드의 장단점은 아래와 같다.프로세스 종료 후에도 데이터가 휘발되지 않고 남아있음Java 애플리케이..
스프링부트에서 DB를 사용할 경우, 대개 Spring Daat JPA를 사용하여 DB와 상호작용한다.JPA를 사용할 경우, 프로젝트를 시작할때, 프로젝트에 정의된 Entity에 따라서 자동으로 DB를 초기화해주는 상황을 한번쯤 본 적 있을것이다. 해당 초기화를 잘 사용하면 DB 테이블을 직접 생성하지 않고도 편리하게 테이블을 사용할 수 있다.이와같은 초기화 방법에 대해 스프링 부트 공식 문서에서는 설명하고 있다.본 글에서는 해당 내용에 대해 정리해보고자 한다.DB 초기화스프링부트에서는 DB를 초기화 하기 위한 두가지 방법을 제공한다.spring.jpa.generate-ddl (boolean) : DB 초기화 기능을 끄고 킬수 있다.spring.jpa.hibernate.ddl-auto (enum) : 위의..
프로젝트를 진행하다 보면 엔티티에 생성 시간 또는 마지막 수정 시간에 대한 필드를 넣는 경우가 한번쯤 있을 것이다.이때 가장 단순한 방법으로는 setter 를 사용해서 직접 시간을 설정해 줄수도 있겠지만, 매번 직접 시간을 설정하자니 영 번거롭다.JPA에서는 이러한 상황을 위해, 시간을 자동으로 기록해주는 기능을 제공한다.한번 살펴보자.01.JPA Auditing 이란?Auditing은 '감시', '감사' (thank 말고 다른 감사..)의 의미를 가지고 있다.Auditing은 말 그대로 Entity의 생성, 변경 등을 감시하는 기능이다.JPA에서는 Auditing을 통하여 Entity가 생성되거나 변경되는 시간을 추적하고 기록한다.그럼 해당 기능을 어떻게 사용하는지 알아보자02.JPA Auditing ..
프로젝트를 진행하다 보니, Entity 클래스 내부에 존재는 해야하는데, DB에는 저장할 필요 없는 변수를 사용할 일이 생겼다.properties 파일의 값을 받아오기 위해 @Value를 사용할 변수를 정의했는데, 해당 변수를 DB에는 반영시키고 싶지 않았다.이를 위해 방법이 없나 살펴봤는데 @Transient 아노테이션을 사용하면 DB에 반영되지 않는다고 한다.ex@Entity@Getter@Setterpublic class Diary { @Transient @Value("${path.res.img.default-img}") String defaultImgPath; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) priv..
Im_Hayden
'Spring boot' 태그의 글 목록