Back-end 65

Lombok @Setter 사용 지양 & lombok.config

1. Lombok의 Setter 사용 지양해야하는 이유 - Builder 패턴을 사용해라 1) Setter 메소드를 사용하면 값을 변경한 의도를 파악하기 어렵다. 왜, 어떠한 의도로 데이터를 변경하는지 명확하게 알 수 없다. 코드를 역추적해봐야 한다 2) 객체의 일관성을 유지하기 여럽다. 자바 빈 규약을 따르면 Setter는 public으로 언제든지 변경할 수 있는 상태가 된다. 따라서 모든 곳에서 데이터를 변경할 수 있는 상태가 되기 때문에 객체의 일관성을 유지하기 어려워진다. 2. Setter의 대안 1) 생성자 오버로딩 -> 생성자를 오버로딩하기, 그러나 멤버변수가 많고 다양한 생성자를 가지게 된다면 코드가 길어지고 가독성이 떨어짐 따라서 Builder 패턴 사용 public class School..

@JsonIgonore, @JsonProperty, @JsonNaming & Jackson Object Mapper

"Java Object" =Serialize=> "JSON", (2) "JSON" =Deserialize=> "Java Object" JSON(JavaScriptObjectNotation) 상하차가 쉬운 언어는 Javascript 0. JSON 이란? = 데이터를 보관하는 형식 복잡한 데이터를 인터넷에서 유저들끼리 주고 받을 때 깔끔한 형식으로 데이터를 담는데 필요한 형식이 있다. 이 중에 XML, CSV, JSON이 있다. 1) XML 값 2) CSV Year, Brand, Mode 1997,Ford, E350 3) JSON ~ ... YAML, BSON, SMILE 등 -> 보통 설정 파일에 많이 사용한다. ex) package.json ※ JSON 이랑 JavaScript의 일반 Object는 다르..

Spring 예외 처리 전략 및 Global 예외처리 // @RestControllerAdivce

1. 예외처리 - 발생위치에 따른 구분 Dispatcher Servlet 내에서 발생하는 예외(99%-Controller, Service, Repository) vs. Dispatcher Servlet 전 Filter에서 발생하는 예외 2. 예외처리 방법 1. Controller 단에서의 예외처리 @ExceptionHandler - Contorller 메서드 내의 하위 레이어(Service, Repository 등)에서 예외 발생해도 중간에 처리하지 않는 이상 Controller단까지 예외처리가 던져지고 @ExceptionHandler가 예외를 처리하게 됨. 2. 전역에서 예외처리 - @(Rest)ControllerAdvice - Controller 내의 @ExceptionHandler와 Controll..

Spring - 인터셉터

1. HandlerInterceptor 인터셉터는 Controller의 핸들러가 실행 되기 전이나 후에 추가적인 작업을 실행하기 위해 사용한다. 예를 들어 권한 체크, 로그인 체크 등 관리자 인터셉터 public class AdminInterceptor implements HandlerInterceptor { static final Logger LOGGER = LoggerFactory.getLogger(AdminInterceptor.class); /** * 관리자 페이지는 관리자만 접근 허용. */ public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object handler) { HttpSession session = re..

Exception Handling

예외 처리를 하는 근본적인 이유 : 프로그램이 오작동하거나 비정상 종료를 막기 위해 1. 종류 1) 컴파일 에러(compile-time error) : 구문 체크, 번역, 최적화, 생략된 코드 추가 등을 컴파일러가 한다. 2) 런타임 에러(runtime error) : 프로그램 실행 중 발생하는 에러 (프로그램 종료) - 에러(Error) : 프로그램 코드에 의해 수습될 수 없는 심각한 오류 ex) 메모리 부족, Out of Memory error 혹은 스택오버플로우 StackOverFlowError) - 예외(Exception) : 프로그램 코드에 의해 수습될 수 있는 다소 미약한 오류 --> 예외처리로 프로그램의 비정상적 종료 막을 수 있다. 3) 논리적 에러(logical error) : 작성 의도..

SessionStatus, @SessionAttributes, @SessionAttribute

1.SessionStatus란 SessionStatus는 @SessionAttributes를 활용해 Session에 남긴 데이터를 정리하는데 활용을 하는 인터페이스이다. model.addAttribute("dutch", "hello"); 일반적으로 위 코드 처럼 "dutch" 라는 키로 model에 세팅하면 응답 이후 값이 삭제 된다. 하지만 컨트롤러 클래스 상단에 @SessionAttribues 를 세팅 후 사용한다면 동작이 변경되게 된다. @RequestMapping("dutch") @Controller @SessionAttributes("dutch") public class DutchController @SessionAttributes선언 후 model.addAttribute 를 호출한다면 해당 k..

Jsp- jstl

1. value는 필수적으로 입력해야 하는 속성으로 화면에 출력할 값 적는다. escaperXml 속성은 기본적으로 true https://lifejusik1004.tistory.com/entry/JSP-JSTL-cout-%ED%83%9C%EA%B7%B8-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 [JSP] JSTL c:out 태그 사용하기 c:out 태그란? c:out 태그는 자바에서의 System.out.println 메서드, JSP와 비슷한 역할을 가지고 있습니다. 어떤 값을 입력받던지 간에 콘솔이 아닌 화면에 문자열로 바꾸어서 보여주는 역할입니다. 얼핏 lifejusik1004.tistory.com 2. document.listForm.action = ""; function..

Spring MVC <component-scan>, <annotation-config>, <annotation-driven>

Spring MVC framework provides different configuration elements that are helping or instructing the Spring container to effectively manage the beans and inject the beans when required. 1. 있으면 필요없음. - spring version2.5에 나왔다. - context:component-scan element in the spring configuration file would eliminate the need for declaring all the beans in the XML files. (과거에는 XML file에 bean들 일일이 등록했어야 했다.) -..

Web.xml, DispatcherServlet, ContextLoaderListener 각각의 역할 및 관계

1. DispatcherServlet : - FirstController로 한 개의 WebApplicationContext를 가지며, 또한 여러 개의 DispatcherServlet 가질 수 있다. - 그러나, DispatcherServlet 간(각각 별도의*. xml파일 설정)에는 객체 서로 공유되지 않는다. - 순서는 순서으로 준다. 2. ContextLoaderListener : - DispatcherServlet에서 공통 빈을 필요로 하는 경우 ContextLoaderListener에 설정해주면 된다.(아래 예시) - 통상적으로 여기에는 datasource, springsecurity 등을 설정해준다. contextConfigLocation /WEB-INF/spring/appServlet/root..