2025/05 11

12. @Controller vs @RestController

@Controller: Spring MVC의 전통적인 컨트롤러 어노테이션1. Controller로 View 반환하기클라이언트는 URI 형식으로 웹 서비스에 요청을 보냄DispatcherServlet이 요청을 처리할 대상을 찾음HandlerAdapter을 통해 요청을 Controller로 위임함Controller는 요청을 처리한 후에 ViewName을 반환함DispatcherServlet은 ViewResolver를 통해 ViewName에 해당하는 View를 찾아서 사용자에게 반환- View를 반환함- 컨트롤러는 받은 요청을 처리 후 지정된 ViewName을 반환하는데 DispatcherServlet은 ViewResolver을 통해 해당하는 View를 찾아서 반환해줌 2. Controller로 Data 반환..

SPRING 2025.05.26

11. Web MVC 요청 처리 과정

MVC 패턴의 한계1. forward 중복: view로 이동하는 코드 중복 호출 2. 사용하지 않는 코드- response 객체 3. 공통 처리가 어려움- 기능이 증가함에 따라 공통 처리 부분 증가 Front Controller의 등장: 기존 MVC 패턴이 지니고 있던 단점들을 극복하기 위해 발전된 구조- 모든 클라이언트의 요청이 단일 진입점인 FrontController로 집중됨- 특징 )FrontControllerServlet 하나로 클라이언트 요청을 받음FrontController가 요청에 맞는 컨트롤러를 찾아 호출이로 인해 공통 처리가 가능해짐FrontController를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨- FrontController 도입 전 )- FrontControler ..

SPRING 2025.05.26

10. Spring vs SpringBoot

Spring: Java 엔터프라이즈 개발을 편하게 할 수 있도록 도와주는 오픈소스 경량급 애플리케이션 프레임워크 - 웹 사이트 개발을 위한 백엔드 프레임워크 장점1. DI(Dependency Injection): 개발자가 Spring 프레임워크에 의존성을 주입하면서 객체 간 결합을 느슨하게 하는 것 2. IOC(Inversion Of Control): 컨트롤의 제어권이 개발자에게 있는 것이 아닌 프레임워크가 대신해서 해주는 것- 프레임워크가 객체의 생성, 의존 관계 설정 등을 해준다는 의미- 개발자는 객체의 구체적인 구현에 의존하지 않고 객체의 인터페이스에만 의존할 수 있음 3. AOP(Aspect Oriented Programming): 핵심 기능을 제외한 부수적인 기능을 프레임워크가 제공하는 특징- ..

SPRING 2025.05.26

9. @Autowired 주입 방법 별 차이(Field, Setter, Constructor Injection)

DI(Dependency Injection): 의존성 종속이란, 객체 지향 프로그래밍에서 강한 결합도를 가진 객체들 사이의 의존성을 약한 결합도로 만들어주는 설계 원칙- 스프링 관점에서 클래스 간 의존 관계를 스프링 컨테이너가 자동으로 연결해주는 것을 의미- 객체는 의존성에 대한 관리를 신경쓰지 않고 독립적으로 동작 가능 cf) 객체 간 결합도를 낮춰야 하는 이유재사용성(Reusability) : 의존성을 외부에서 주입받는 경우, 객체는 독립적으로 동작 가능객체를 다른 컨텍스트에서 재사용하기 쉬워짐EX) 데이터베이스 연결을 관리하는 객체를 의존성으로 주입받는 경우, 동일 객체를 다른 데이터베이스에 연결하여 재사용이 가능해짐유지보수성(Maintainability) : 결합도가 낮으면 변경 사항에 대한 영향..

SPRING 2025.05.26

8. Filter & Interceptor

필터(Filter): 디스패처 서블릿에 요청이 전달되기 전 / 후 url 패턴에 맞는 모든 요청에 대해 부가 작업을 처리할 수 있는 기능을 제공 cf) 디스패처 서블릿: 스프링의 가장 앞단에 존재하는 프론트 컨트롤러 - 필터는 스프링 범위 밖에서 처리가 됨- 톰캣과 같은 웹 컨테이너에 의해 관리가 됨- 디스패처 서블릿 전 / 후에 처리됨- 스프링 빈으로 등록 가능 필터의 메소드1. Inint: 필터 객체를 초기화하고 서비스에 추가하기 위한 메소드- 웹 컨테이너가 1회 init 메소드를 호출하여 필터 객체를 초기화하면 이후의 요청들은 doFilter를 통해 처리됨 2. doFilter: url-pattern에 맞는 모든 HTTP 요청이 디스패처 서블릿으로 전달되기 전에 웹 컨테이너에 의해 실행되는 메서드-..

SPRING 2025.05.26

7. Bean(Scope)

Spring Bean: Spring IOC 컨테이너에 등록된 자바 객체 Bean Scope: 스프링 빈이 코드에 영향을 줄 범위를 지정하는 것싱글톤 : 기본값, 스프링 컨테이너가 시작하면서 종료될 때까지 유지되는 아주 긴 스코프프로토타입 : 빈의 생성부터 의존관계 주입까지 관여되고, 그 이후 사라지는 짧은 스코프웹 관련request : 웹의 요청이 들어오고 나갈 때까지 유지되는 스코프session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프application : 웹의 서블릿 콘텍스트와 같은 범위로 유지되는 스코프- 설정 방법- @Scope 어노테이션을 이용해서 설정할 수 있음 1. 싱글톤: 딱 하나의 해당 빈을 생성하고 여러 클라이언트가 사용을 요청했을 때 만들어놓은 동일한 빈을 사용할 수 있..

SPRING 2025.05.26

6. PSA & IOC & AOP & POJO

POJO(Plain Old Object): 다른 환경에 종속되지 않고, 필요에 따라 재사용이 가능한 자바 오브젝트- 자바의 단순 오브젝트를 이용해 비즈니스 로직을 구현하기 위해 생성 PSA(Portable Service Abstraction): 휴대용 서비스 추상화- 서비스 추상화: 서비스 내용을 모르더라도 해당 서비스를 이용할 수 있다는 것을 의미- 휴대용 서비스 추상화: 비즈니스 로직의 수정없이 언제든지 변경할 수 있다는 것을 의미- Why )서비스를 추상화함으로써 개발자가 실제 구현부를 알지 못하더라도 해당 기능을 사용할 수 있음추상화 계층인 인터페이스 API의 정보를 활용해 해당 서비스의 모든 기능을 이용할 수 있음추상화 계층을 구현하는 또 다른 서비스로 언제든지 교체할 수 있음 Spring에서 ..

SPRING 2025.05.26

5. ApplicationContext

ApplicationContext: 빈들의 생성과 의존성 주입 등의 역할을 하는 일종의 DI 컨테이너- Spring에서는 Bean의 생성과 관계 설정 같은 제어 역할을 담당하는 IOC 컨테이너인 BeanFactory가 존재- 이것만으로는 서비스에서 요구하는 다양한 기능들을 수용하기에 무리가 있음- ApplicationContext라는 인터페이스를 만들어 개발자의 Bean을 생성하고 제어하는 것뿐만 아니라 설정 정보들을 이용한 Bean간의 관계 설정, 제어 작업 등 추가적인 기능을 수행할 수 있음 스프링 컨테이너=> ApplicationContext: BeanFactory 인터페이스의 하위 인터페이스=> BeanFactory에 부가 기능을 추가한 것- BeanFactory를 상속받아 확장한 Applicat..

SPRING 2025.05.26

4. MVC 패턴

MVC: Model, View, Controller의 각 머릿글자를 따온 표현으로 프로젝트나 앱을 구성할 때 구성 요소를 세가지 역할로 구분한 것- 비즈니스 로직 자체를 컨트롤러에서 핸들링 하게 되면 컨트롤러에 너무 많은 책임이 부과됨-> 일반적으로 비즈니스 로직은 Service 계층을 두어 따로 처리- JSP만으로 구현한 웹앱에서는 비즈니스 로직의 노출, 가독성 저하와 같은 문제점이 발생 Model, View, Controller의 관계사용자의 request를 controller가 받음controller는 service에서 비즈니스 로직을 처리한 후 결과를 model에 담음model에 저장된 결과를 바탕으로 시각적 요소 출력을 담당하는 view를 제어하여 사용자에게 전달- web)User : 사용자가 ..

SPRING 2025.05.24

3. JSP

JSP(Java Server Pages): 동적 웹 페이지를 개발하기 위한 프로그래밍 기술- Java를 사용하여 서버 측에서 웹 페이지를 생성해 웹 브라우저로 전송- 장점 )짧은 코드로 동적인 웹 페이지를 생성할 수 있음기본적인 예외는 자동으로 처리됨많은 확장 라이브러리를 사용할 수 있음스레드 기반으로 실행되어 시스템 자원을 절약해줌- JSP는 JavaEE의 핵심요소 -> JavaEE는 대한민국 정부 표준 프레임워크의 근간 탄생 배경1. 정적 웹 페이지(Static Web Page): 클라이언트가 어떤 형태로 요청을 하던 항상 동일한 모습을 보여주는 웹 페이지 2. 동적 웹 페이지(Dynamic Web Page): 동일한 페이지라 할지라도 클라이언트의 요청에 따라 그때 그때 적절한 웹 페이지를 생성해 보..

SPRING 2025.05.24