BACKEND/JAVA & SPRING 43

푸시 알림은 어덯게 구현할까 ? FCM & SSE

Real Time System⏰ 알림 기능FCM동작과정장점단점SSE동작과정장점단점 프로젝트를 진행하면서, 거래완료 와 정산완료 시, 푸시 알림을 구현해야했다. 푸시 알림을 어떻게 구현하면 좋을지 구글링해보다가, Real Time System에 대한 기초적인 공부와, 대표적인 기술인 FCM과 SSE에 대해 공부해보자. 🌱Real Time System“결과의 유효성이 얼마큼의 시간동안 유효한가” ⇒ deadline시간의 정밀성을 요구Hard Real-Time Systemdeadline 이전에 반드시 결과값을 돌려줘야하는 시스템deadline 이후에 결과값이 전달시, 유효하지 않는 결과값ex) 공장Soft Real-Time Systemdeadline이 지나더라도 결과값의 유효성이 떨어지긴 하나, 무효 x시간의..

BaseTimeEntity.java란 ?

데이터를 논리삭제 하기 위해서 주로 공통된 BaseTimeEntity 클래스를 만들어서 사용한다. 공용으로 사용되는 BaseTimeEntity의 함수들과 칼럼들에 대해 공부하기 위해 작성한다. 🌱그전에, 미리 물리삭제와 논리삭제에 대해 공부하는 것을 추천한다. https://for-if.tistory.com/59 @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public abstract class BaseTimeEntity { @CreatedDate private LocalDateTime createdAt; @Column(insertable = false) @LastModifiedDate private LocalDateT..

Setter 지양, 그리고 DTO를 써야하는 이유

Entity Level에서 @Setter를 사용하면 안되는 이유1. 개발자의 의도를 알기 어렵다.2. 메소드 단의 개발로 책임 분산을 덜할 수 있다.그럼 어떻게 해결할 수 있을까?1. @Builder 사용하기2. DTO단에서 Getter와 Setter 사용하기 개발을 진행하다 보면, Entity레벨에 @Setter를 사용하여 데이터를 쉽게 바꾸거나, 지정해주고 싶을 때가 있었다. 하지만 대부분의 강의나 피드백에서 Setter 사용은 적극적으로 지양하고 있다. 처음에는 왜 어노테이션만 붙이면 되는건데 이 쉬운걸 포기해야할까 ? 라는 의문이 들었다. 하지만 여러번의 조사 끝에 왜 Setter을 사용하지 않고, 대신 DTO를 사용해야하는지 깨달을 수 있었다. 오늘은 그 이유에 대해서 작성해보도록 하겠다. 🌱 ..

물리삭제 & 논리삭제

물리삭제 & 논리삭제 의 정의물리삭제 (Hard Delete)논리삭제 (Soft Delete)왜 서비스에서는 주로 논리삭제제를 사용할까 ?논리삭제에 단점은 없을까?물리삭제와 논리삭제 개발 방법물리삭제논리삭제 이전에 개발을 할 때, 상항에 따라 UPDATE를 할때도, DELETE를 할때도 있었다. 그 차이는 논리삭제와 물리삭제인데 그 차이점을 공부하고 앞으로의 개발상황에 적용하도록 할 것이다. 🌱 물리삭제 & 논리삭제 의 정의물리삭제 (Hard Delete)SQL의 Delete 명령어를 사용하여 직접 데이터를 삭제하는 방법논리삭제 (Soft Delete)SQL의 Update 명령어를 사용하여 삭제 여부를 알 수 있는 칼럼에 데이터가 삭제되었다는 값을 넣어서 표현ex) deleted_at이 null이면, 삭..

@NotBlanck, @NotEmpty, @NotNull 차이점

🚗 @NotBlank, @NotEmpty, @NotNull 차이점javax.validation.constraints 패키지에 포함된 기능API에서 값을 입력받을 때, validation 체크를 위해 사용되는 annotaion이다. @NotNull ❌ Null을 허용하지 않는다. 🆗 “ “, “” 는 허용한다.ex) Integer, Long, CharSequence, Collection, Map, Array 타입에 사용 @NotEmpty❌ Null을 허용하지 않는다.❌ “”를 허용하지 않는다.🆗 “ “은 허용한다.ex) CharSequence, Collection, Map, Array 타입에 사용 @NotBlank❌ Null, “ “, “” 모두 다 허용하지 않는다.ex) String 타입만 사용 ✨그럼 ..

@Configuration이란 (w/ IoC, DI)

Spring을 공부할 때, Spring은 객체를 Bean으로 등록해서 이를 사용함을 알 수 있는데, 여기서 @Configuration 정보가 나오게 된다. Spring의 흐름을 제대로 파악하고자 이번엔 @Configuration을 포스팅한다. 🌱 @Configuration이란?객체 생성 방법들@Configuration의 역할IoC와 DI (w/ Spring Bean)“IoC를 구현하기 위해 DI가 필요하다.”@Configuration이란?Spring에서는 Bean을 수동으로 등록할 때, 설정 class 위에 @Configuration을 추가하고, @Bean을 사용해서 수동으로 Bean을 등록할 수 있다.@Configuration public class PasswordEncoderConfig { @Bean..

자바, JSP, 스프링, 스프링부트란?

최근 자주 언급되는 언어부터 프레임워크까지 개념 정리를 하고 넘어가고자 한다.이를 주로 사용하는 백엔드 개발자가 되기 위해선 꼼꼼히 정확하게 이해해보자 🌱 Java public class JavaProject { // Java를 처음 접하면서 보게되는 코드 public static void main(String[] args) { System.out.println("Hello World"); } }객체지향적 프로그래밍 언어스프링의 근간이 되는 언어(한글)스프링은 자바 뿐 아니라 코틀린, 그루비로도 사용할 수 있으나 여기서는 자바로 진행스프링 자체도 거의 대부분 자바로 만들어져 있음 JSP (Java Server Page)자바로 프론트엔드를 엮어서 사용하는 개념프론트와 백이 모두 JAVA를 사용해서 페이지를..

프레임워크와 라이브러리의 차이점

프레임워크와 라이브러리는 개념이 비슷하여 자주 혼동되어 사용된다.나 또한 2단어는 수없이 들어왔지만 “두 개념의 차이점을 설명해봐!”라고 하면 고민됐던 단어이다.이번 기회에 정확하게 짚고 넘어가서 앞으로는 제대로 설명할 수 있어야겠다. 🌱 ✨프레임워크와 라이브러리 개념정리프레임워크“뼈대”, “기반구조”로 제어의 역전(DI)가 적용된 기술즉, “소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합” 라이브러리단순 활용가능한 도구들의 집합개발자가 만든 클래스에서 호출하여 사용, ✨그러면 둘의 차이점은?“제어 흐름에 대한 주도성이 누구에게/어디에 있는가” 즉, “어플리케이션의 흐름을 누가 쥐고 있느냐”에 따라 사용하는 언어가 다르다.쉽게 설명하자면, “떡볶이”를 만든다고 해보자. ..

Filter & Interceptor

Exception Handling에 대해 공부하던 중, Spring에서 Controller까지 요청/응답이 이동하는 과정에 대해 고민하게 됐다. 그 과정에서 Filter와 Interceptor에 대한 지식이 부족함을 깨닫고 이를 보완하고자 포스팅을 작성한다. 🌱 Spring에서 Filter와 Interceptor를 사용하는 이유FilterFilter Method 종류InterceptorInterceptor Method 종류Filter vs InterceptorSpring에서 Filter와 Interceptor를 사용하는 이유개발을 주로 하다보면, 공통적으로(중복적으로) 처리해야되는 업무들이 많다. 공통 업무와 관련된 코드들이 페이지마다 존재한다면, 중복 코드가 많아지고 서버에 부하를 줄 수도 있고 소스 ..

Dispatcher Servlet이란?

Spring을 공부하면 꼭 나오는 주제 “Dispatcher Servlet”본격적으로 프로젝트와 공부를 병행하다보니, Controller가 Clinet의 요청을 전달받고 Server로부터의 응답을 반환하는 연결다리임은 알았지만 그 과정이 어떻게 진행되는지 몰랐었다. “왜 Spring은 이렇게 작동할까?”하는 의문이 계속해서 생겨났고, Dispatcher Servlet도 그 궁금중 중 하나였다. 이번 포스팅을 통해 정확히 그 과정을 이해하고 넘어가고자 한다. 🌱 Dispatcher Servlet이란?Spring은 왜 Dispatcher Servlet을 사용할까?Dispatcher Servlet의 동작 과정1) 클라이언트의 요청을 Dispatcher Servlet이 받음2) Handler Mapping : ..