본문 바로가기

👩‍💻 BackEnd/🌿 스프링 [Spring]14

[Spring MVC] MVC 패턴 구현해보기 / Adapter 패턴 / 유연한 컨트롤러 구현 유연한 컨트롤러 1 - v5 여러가지 방식의 컨트롤러를 혼용하여 사용하고 싶을 경우! 어떻게 해야할까? 어댑터 패턴 지금까지 만들었던 컨트롤러는 한 가지 방식의 컨트롤러 인터페이스만 사용할 수 있다. ControllerV3, ControllerV4 는 완전히 다른 인터페이스인데... 따라서 호환이 불가능하다는 단점이 있다! 이럴때 서로 호환이 되도록 도와주는 것이 바로 어댑터이다. 어댑터 패턴을 사용하여 프론트 컨트롤러가 다양한 방식의 컨트롤러를 처리할 수 있도록 변경해보자. 핸들러 어댑터 : 중간에 어댑터 역할을 하는 어댑터가 추가되었는데 이름이 핸들러 어댑터이다. 여기서 어댑터 역할을 해주는 덕분에 다양한 종류의 컨트롤러를 호출할 수 있다. 핸들러 : 컨트롤러의 이름을 더 넓은 범위인 핸들러로 변경했.. 2024. 1. 17.
[Spring MVC] Section 4. MVC 프레임워크 만들기 프론트 컨트롤러 패턴 소개 프론트 컨트롤러 도입 전 모든 입구로 요청이 다 들어오니까 들어오는 곳 마다 필요한 로직을 작성해야하는데 이 코드가 중복될 우려가 있다. 프론트 컨트롤러 도입 후 공통 로직을 하나의 프론트 컨트롤러에 작성해둠. 그리고 여기서 어떤 컨트롤러를 호출할지까지 작성. 프론트 컨트롤러 패턴 특징 입구를 하나로 함으로써 공통 처리 가능해짐. 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출하게됨. 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨. 스프링 웹 MVC와 프론트 컨트롤러 스프링 웹 MVC 의 DispatcherServlet 이 FrontController 패턴으로 구현되어있음. (오호!) 프론트 컨트롤러 도입 - v1 (++ 여기 부분은 강의 내용을 .. 2024. 1. 13.
[Spring MVC] MVC 패턴 한계 MVC 컨트롤러의 한계 포워드 중복 View 로 이동하는 코드가 항상 중복 호출되어야 한다. 이 부분을 메서드로 공통화해도 되지만, 해당 메서드도 항상 직접 호출해야한다. ViewPath에 중복 prefix : /WEB-INF/views/new-form.jsp suffix : .jsp 사용하지 않는 코드 response 공통처리가 어렵다. 이를 해결하기 위해 컨트롤러 호출 전에 먼저 공통기능을 처리해야 한다. 프론트 컨트롤러 패턴을 도입하면 이런 문제를 해결 가능! Front Controller 패턴 도입 : 입구를 하나로 필터랑 다름. 2024. 1. 11.
[Spring MVC] JSP 활용 방법 및 MVC 패턴의 등장 배경 webapp 폴더 밑에 있는 파일은 호출이 가능하다. JSP JSP 문서라는 의미. 반드시 이렇게 시작해야함. 그 외에는 html 문서와 동일하게 아래에 작성해 나가면 됨. JSP는 서버 내부에서 Servlet 으로 변환된다. 이 모습은 Servlet 클래스를 구현한 모습으로 변환된다고 함! 실행 방법 실행 시, 주소 줄에 .jsp 까지 적어줘야 파일을 찾아가 실행시킬 수 있음. Import 방법 자바코드 사용 안에는 자바 코드를 그대로 가져와 입력할 수 있음. id= username= age= 는 자바코드를 출력할 수 있음. 서블릿과 JSP의 한계 서블릿으로 개발할 때는 화면을 위한 html을 생성하는 부분이 자바 코드와 섞여있어서 코드 가독성이 좋지 못했다. JSP를 사용하자 html 코드를 작성하기.. 2024. 1. 11.
[Springboot] DAO 설계 DAO : 데이터베이스에 접근하기 위한 로직을 관리하기 위한 객체 (데이터 조작 기능) 스프링 데이터 JPA에서 DAO의 개념은 리포지토리가 대체!! 비즈니스로직을 개발 하다보면 데이터를 다루는 중간 계층을 두는 것이 유지보수 측면에서 용이한 경우가 많음. DAO 클래스 생성 DAO 클래스는 일반적으로 '인터페이스-구현체' 구성으로 생성함. 서비스레이어에 DAO객체를 주입받을 때 인터페이스를 선언하는 방식으로 구성할 수 있음. import com.springboot.jpa.data.entity.Product; public interface ProductDAO { // method 선언 Product insertProduct(Product product); // 새로운 값 입력 시 사용, REST : PO.. 2023. 9. 3.
[Springboot] 로깅 라이브러리 - Logback Logback 적용하기 1. logback-spring.xml 문서 추가 (resources > logback-spring.xml문서 추가) 2. logback-spring.xml 작성 INFO [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger %msg%n INFO ${LOG_PATH}/info.log true ${LOG_PATH}/info_${type}.%d{yyyy-MM-dd}.gz 30 [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger %msg%n 3. 로그를 적용할 클래스에 멤버변수 선언, 메서드 내부에 로깅 코드 작성 @RestController @RequestMapping("/api/.. 2023. 8. 31.