본문 바로가기

Spring 프레임워크/이론27

[ 스프링 프레임워크 ] Null Safety Null Safety 널 안정성을 높이는 방법 1) 애초에 아래의 코드와 같은 널 체크 코드를 만들지 않고 스프링 프레임워크에서 제공 하는 어노테이션을 사용 할 수 있다. (널을 체크 하는 로직은 단순한 유효성 검사 로직을 반복 하는 것이기 때문에 보일러 플레이트 라고 볼 수 있다) 2) 아래의 코드와 달리, 애초에 널 체크를 코드를 작성 하지 않았다고 할 때, 발생하는 NPE 를 어노테이션을 통해 방지 할 수 있다. 3) 완벽한 방법은 아니지만, IDE 에서 경고를 표시함으로써, 1차적인 널 문제를 방지하고, 정확한 에러 위치를 확인할 수 있도록 할 수 있다. public void method(String request) { if(request == null) return; System.out.prin.. 2023. 10. 22.
[ 스프링 프레임워크 ] Validation / Data Binding Validation 이란 ? >> 유효성 검증을 뜻하는 단어. 주로 사용자 또는 서버의 요청 (http request) 내용에서 잘못된 내용이 있는지를 꼼꼼하게 확인하는 단계를 의미 한다. Validation 종류 학문적으로 여러 세부적인 단계들이 존재 한다. >> 실제로 개발자가 주로 가지고 가야 하는 검증은 크게 두 종류로 나뉜다. 1) 데이터 검증 - 필수 데이터의 존재 유무 - 문자열의 길이 또는 숫자형 데이터의 경우 값의 범위 - email, 신용카드 번호 등 특정 형식에 맞춘 데이터 2) 비즈니스 검증 - 서비스에 정책에 따라 데이터를 확인 하여 검증 (배달앱에서 배달 요청을 할 때, 해당 주문건이 결제 완료 상태인지 확인 하기 등) - 경우에 따라 외부 API를 호출하거나 또는 DB의 데이터.. 2023. 10. 20.
[스프링 프레임워크] AOP AOP 관점 지향 프로그래밍 - Aspect Oriented Programming AOP : 공통적인 부분을 스프링이 도와서 처리해준다는 개념. 그런데 공통적인 부분의 범위가 어느정도 일까 ? 완전히 전반적인 프로젝트 공통적인 기능의 대표적인 예시는 다음과 같다. >> 인증 이런것들은 필터 또는 인터셉터로 처리 하는게 더 적합하다. 하지만, 특정 타이밍 / 시점 / 컨트롤러 에 대해서 원하는 작업 (기능) 을 부여 하고 싶다면 ? 이런것들은 AOP 개념을 활용하여 처리 하는게 좋다. (필터나 인터셉터 보다 조금 더 똑똑하게 처리 하고 싶을 때) 예시) 1) 로깅 특정 함수가 호출 되었을 때 자세한 로깅을 남기고 싶을 때. 2) 트랜잭션 Spring MVC 프로젝트를 구현할 때, @Transactional.. 2023. 10. 19.
[ 스프링 프레임워크 ] 핵심 기술 / 디자인 철학 스프링 프레임워크 핵심 기술 앞으로 스프링을 업무에서 사용 하게 되면, 결국 이미 구성 되어 있는 것들을 따라 하면서 비슷하게 기능을 찍어 내는 그림으로 흘러 가게 될 것이다. 그런데 단순히 따라 하는 것은 어렵지 않지만, 동작 하는 원리를 알지 못한다면 어떻게 될까 ? 문제가 발생 했을 때, 원인 파악도 어려울 뿐더러 해결 하는 것은 더욱 어려울 것이다. 그리고, 약간 다른 요구 사항에 맞쳐서 기능을 개발 하게 되면 기존에 있는 것들을 그대로 따라 할 수는 없게 될 것인데, 이때 스프링 프레임워크의 내부적인 동작 원리를 알지 못하면 응용이 어려워지게 될 것 이다. 따라서 스프링 프레임워크의 내부 동작 원리에 대해 파악 하는게 중요 하다고 할 수 있다. [ DB 관련 기능 ] [ Web 관련 기능 ] [.. 2023. 10. 18.
Java / Spring Framework / SpringBoot 자바 : 객체지향적 프로그래밍 언어 - 우리가 배우게 될 스프링의 근간이 되는 언어 (마치 한글 처럼 기본 언어 라고 생각 하면 된다) - 스프링은 자바 뿐 아니라 코틀린, 그루비로도 사용할 수 있다. - 스프링 자체도 거의 대부분 자바로 만들어져 있다. 스프링 프레임워크 : 자바를 이용 해서 어플리케이션을 쓰기 위해 활용 하는 프레임워크 - 스프링이라는 틀 (프레임) 이 있고, 그 안에 자바 라는 언어를 내용으로 담을 수도 있고, 코틀린 또는 그루비 언어로도 내용을 담을 수도 있다. 그런데 스프링은 왜 탄생 했을까 ? 자바로 개인용 어플리케이션을 만드는것을 넘어서, 웹이 발전 하면서 서버 에서 사용자의 Action에 따라 응답을 줘야 하는 어플리케이션이 많이 필요로 하게 됬다. 이런 어플리케이션을 자바.. 2023. 10. 18.
@RequestMapping / @GetMapping / @PostMapping @GetMapping 과 @PostMapping 은 @RequestMapping 어노테이션을 상속받은 것들 이다. ================================================================ 1. @RequestMapping 어노테이션의 장점 : 1) 모든 HTTP 요청 메서드에 대한 처리를 하나의 메서드에서 다룰 수 있다. 2) 다양한 요청 메서드를 하나의 메서드에서 처리하고, 동일한 동작을 여러 요청 메서드에 대해 공유할 때 유용 하다. ================================================================ @RequestMapping 어노테이션의 단점 : 1) 코드 가독성이 상대적으로 낮을 수 있고, 요청 메서드에 .. 2023. 9. 20.
Spring 프레임워크 - 다국어 처리 기능 과거에는 다른 언어로 웹 브라우저 서비스를 제공 해야 할 때, .jsp 파일 자체를 여러개 제작 해서 서비스를 했었다. 하지만, Spring 프로젝트 에서는, "메세지 파일" 을 제작 해서, 하나의 Xxx.jsp 파일에서 버튼을 간단하게 클릭 하는 것으로, 사용자가 원하는 언어로 서비스를 제공 할 수 있는 기능이 존재 한다. 1. src/main/resources 에 message 라는 이름으로 패키지 생성. 2. message 페키지 내부에 언어에 관한 파일을 생성. 이때, 파일 이름은 크게 상관 없지만, 파일 이름 곧바로 나오는 _ (언더바) 뒤의 "언어형식" 은 반드시 지켜 줘야 하고, 파일 생성시, 파일 형식은 반드시 .properties 로 생성 한다. 예시) messageFile_ 까지는 공통.. 2023. 8. 24.
Spring 프레임워크 @SessionAttributes 어노테이션 [ Spring MVC 작업시 발생하는 null 업데이트 이슈 해결 하기 ] >> @SessionAttributes 어노테이션 1. 위의 이미지는 작성된 게시글을 수정하는 기능 페이지인, detailBoard.jsp 이다. 본인은 18번째 라인에 작성한것처럼, 만약 이미지 파일을 새롭게 올리지 않을 경우, 처음 게시글을 올릴 때 업로드 했었던 이미지 파일을 다시 hidden 으로 해서, Controller 에게 전달 하는 코드 이다. 이렇게 하지 않을 경우, 이미지 파일을 새롭게 올리지 않으면, fileUpload 라는 이름으로 Controller 에게 전송 되는 파일은 null 이 된다. null 데이터가 Controller 에게 전달되면, bVO.getFileUpload().isEmpty() 는 업로.. 2023. 8. 18.
Spring ExceptionResolver 을 사용한 예외 처리 1. [ 예외 처리 페이지 ] 예외가 발생 했을 경우, 404 Error 또는 500 Error 등의 에러가 발생 할 수 있는데, 이것을 클라이언트 (사용자) 에게 보여서는 안된다. 따라서, 예외가 발생 했을 경우, 사용자에게 보여줄 페이지를 만들어야 한다. 2. 핵심은 예외를 반드시 개발자가 직접 처리 해야 한다는 것이다. 로직을 통해서 예외를 잡는 경우 >> 자바에서, try-catch 블록 등을 사용해서 예외를 잡을 수 있고, 또는 null 등을 반환 하는 경우, View 에서 JSTL 으로, null 이면 특정 문구가 나오도록 처리 할 수 있다. 보통은 위와 같이, 로직을 통해 개발자가 직접 예외를 처리 한다. 3. 그런데, Spring 에게 예외를 떠넘기는 방법이 존재 한다. 개발자 == 나 는.. 2023. 8. 18.