본문 바로가기

Spring 프레임워크54

인터페이스 개념 메모 1. FrontController 패턴 기존 FrontController 패턴으로 개발을 했을 때는 (스프링 프레임워크 사용 이전) 필요한 DAO를 직접 이용 했었다. 이것의 단점은 결합도가 높기 때문에 유지 보수에 불리하다는것 이였다. 따라서, Controller 와 DAO 사이에 Service Interface 를 생성 하면, Controller 가 직접적으로 DAO를 사용하는게 아니라, Service가 DAO를 사용하는 방식으로 변경 되므로, 결합도가 낮아지고 유지보수가 유리해진다. 왜그럴까 ? Service 가 Interface 를 멤버 변수 (의존 관계) 로 가지고 있으면, (인터페이스의 다형성) @ 어노테이션으로 어떤 클래스에 설정하는지에 따라서 객체화된 특정 객체를 주입 받을 수 있다. 즉,.. 2023. 9. 21.
@RequestMapping / @GetMapping / @PostMapping @GetMapping 과 @PostMapping 은 @RequestMapping 어노테이션을 상속받은 것들 이다. ================================================================ 1. @RequestMapping 어노테이션의 장점 : 1) 모든 HTTP 요청 메서드에 대한 처리를 하나의 메서드에서 다룰 수 있다. 2) 다양한 요청 메서드를 하나의 메서드에서 처리하고, 동일한 동작을 여러 요청 메서드에 대해 공유할 때 유용 하다. ================================================================ @RequestMapping 어노테이션의 단점 : 1) 코드 가독성이 상대적으로 낮을 수 있고, 요청 메서드에 .. 2023. 9. 20.
의존 주입 class Apple { private Banana banana; public void hello() { banana.hello(); } }//Apple class Banana { public void hello() { .. } }//Banana ============================= main() { Apple apple = new Apple(); apple.hello();//NPE 발생. } apple을 주체로 해서 Banana 클래스의 인스턴스 메서드를 사용 할 수 있을까 ? 정답은 X 이다. NPE 가 발생 한다. 왜냐하면, Banana 클래스가 객체화 되지 않았기 때문 이다. 스프링 프레임워크를 사용한다고 가정하고, Banana 클래스를 객체화 시켜보자. 원래 객체화는 new 키워드.. 2023. 9. 19.
Spring 프레임워크 - 다국어 처리 기능 과거에는 다른 언어로 웹 브라우저 서비스를 제공 해야 할 때, .jsp 파일 자체를 여러개 제작 해서 서비스를 했었다. 하지만, Spring 프로젝트 에서는, "메세지 파일" 을 제작 해서, 하나의 Xxx.jsp 파일에서 버튼을 간단하게 클릭 하는 것으로, 사용자가 원하는 언어로 서비스를 제공 할 수 있는 기능이 존재 한다. 1. src/main/resources 에 message 라는 이름으로 패키지 생성. 2. message 페키지 내부에 언어에 관한 파일을 생성. 이때, 파일 이름은 크게 상관 없지만, 파일 이름 곧바로 나오는 _ (언더바) 뒤의 "언어형식" 은 반드시 지켜 줘야 하고, 파일 생성시, 파일 형식은 반드시 .properties 로 생성 한다. 예시) messageFile_ 까지는 공통.. 2023. 8. 24.
Spring 프레임워크 - 어노테이션을 활용하여 비동기처리 구현 하기 1. 비동기처리를 구현 하기 위해서, ajax 메서드를 사용 할 수 있다. 따라서, jQuery를 활용 해야 하므로, jQuery 링크를 CDN 방식으로 가져왔다. https://releases.jquery.com/ jQuery CDN jQuery CDN – Latest Stable Versions jQuery Core Showing the latest stable release in each major branch. See all versions of jQuery Core. jQuery 3.x jQuery 2.x jQuery 1.x jQuery Migrate jQuery UI Showing the latest stable release for the current and legac releases.jq.. 2023. 8. 22.
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.
파일 업로드시, 비동기처리를 통해, 썸네일 기능을 구현 하기 https://hwanii96.tistory.com/338 Spring 프레임워크 MultipartFile 인터페이스 1. MultipartFile ? MultipartFile은 Spring 프레임워크 에서 제공하는 인터페이스 이다. HTTP 요청으로 전송된 파일 데이터를 처리하기 위한 방법을 추상화 했다. 주로, 파일 업로드 기능을 구현할 때 사용 hwanii96.tistory.com 위의 게시글에서 Spring 프레임워크에서 제공하는 MultipartFile 인터페이스를 사용해서, 파일 업로드를 쉽고 간단하게 처리 할 수 있었다. 파일을 업로드 할 경우, 서버를 방문 하지 않고, 무언가 페이지의 변경사항이 생기는 것을 원한다면 ? >> JavaScript 를 사용 한다. (JS) 예시) 1) 아이디 .. 2023. 8. 18.
throws 와 try-catch 메모 Spring 에서 간단하고 쉬운 파일 업로드를 위해 기본 제공 해주는 인터페이스. == MultipartFile 이다. 이때, MultipartFile 자료형인 참조변수로 메서드를 사용 할 때, 예시) fileUpload.transferTo(new File("C:\\Users\\dhfg0\\Desktop\\spring\\springWS\\day60\\src\\main\\webapp\\images\\" + fileName)); 예외 처리를 하라고 안내를 해준다. 따라서, 이곳에서 바로 try-catch를 사용 하면 해결 된다. 그런데, 위의 메서드 시그니쳐에 throws 키워드를 명시해서, 예외를 던져버릴 수 있다. throws 는 예외를 말 그대로 던져버리는 기능을 한다. 그러면 예외를 던졌으면, 어디서.. 2023. 8. 17.