[Spring MVC] 스프링 MVC 패턴 정리
·
Spring
* 해당 포스팅은 김영한 강사님의 스프링 MVC 강의 1편을 보고 정리한 것입니다.  MVC 패턴이란? MVC는 Model, View, Controller를 줄인 말이다. 그럼 Model, View, Controller는 또 뭘까?  Model- 뷰에 출력할 데이터를 담아둔다. 모델은 뷰에게 필요한 모든 데이터를 담아서 전달해주고 이 덕분에 뷰는 비즈니스 로직이나 데이터 접근에 신경쓰지 않고 화면 렌더링에 집중할 수 있다.  View- 모델에 담겨 있는 데이터를 사용해서 화면을 그리는 일에 집중한다.  Controller- HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담아두는 역할을 한다. 즉 HTTP 요청을 받고 파라미터를 검..
[Spring 핵심 원리 이해] 8. 빈 스코프
·
Spring
빈 스코프란 말 그대로 빈의 범위, 빈이 존재할 수 있는 범위를 뜻한다. 지금까지 우리는 스프링이 기본적으로 제공해주는 싱글톤 스코프를 사용해왔다. 스프링은 다음 같은 다양한 스코프를 지원한다. 싱글톤: 기본 스코프. 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 짧은 범위의 스코프.웹 관련 스코프request: 웹 요청이 들어오고 나갈 때 까지 유지되는 스코프session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프application: 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프빈의 스코프는 @Scope("protoytype") 과같이 애노테이션으로 지정할 ..
[Spring 핵심 원리 이해] 7. 빈 생명주기 콜백
·
Spring
데이터베이스 커넥션 풀이나 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화 종료 작업이 필요하다.  이번 시간에는 스프링을 통해 이러한 초기화 작업과 종료 작업이 어떻게 진행되는지 알아보겟다.  간단하게 외부 네트워크와 미리 연결할 객체를 하나 만들어보자. 이 객체는 애플리케이션시작 시점에 connect()를 호출해서 연결을 맺어두고, 애플리케이션이 종료되면 disConnect를 호출해서 연결을 끊어야 한다.  package hello.core_review.lifecycle;public class NetworkClient { private String url; public NetworkCli..
[Spring 핵심 원리 이해] 5. 컴포넌트 스캔
·
Spring
저번 시간 우리는 싱글톤 패턴이 무엇인지 그리고스프링 컨테이너가 어떻게 싱글톤 패턴을 보장해줄 수 있는지에 대해 이야기 해보았다. 스프링 컨테이너는 @Configuration이 붙은 클래스의 스프링 빈 메서드를 CGLIB 라이브러리를 통해서 같은 인스턴스 객체를 반화하도록 도와준다.  이번 시간에는 스프링 빈을 등록할 때 설정 정보 없이 자동으로 스프링 빈을 등록할 수 있는 컴포넌트 스캔이라는 기능에 대해서 알아보도록 하겠다. 또한 의존 관계를 자동으로 주입해주는 @Autowired 기능도 알아볼 것이다.  1. 컴포넌트 스캔 시작  먼저 AutoAppConfig.java 파일을 하나 만들어주자  package hello.core_review;import org.springframework.context..
[Spring 핵심 원리 이해] 4. 싱글톤 컨테이너
·
Spring
이전 글에서 우린 스프링 컨테이너가 어떻게 스프링 빈을 관리하고 사용하는지 알아보았다. 스프링 컨테이너의 상속 관계와 스프링 빈을 조회하는 방법이 중심 내용이었다.  이번 시간에는 싱글톤 컨테이너에 대해 알아보는 시간을 갖도록 하겠다.  1. 싱글톤 패턴이란? AppConfig와 같이 DI 컨테이너는 사용자의 요청을 처리하는 역할을 수행한다. 그런데 요청하는 클라이언트가 하나가 아니라 여럿이라면 어떨까? 현재 우리가 작성한 AppConfig는 요청이 일어날 때 마다 객체를 새로 생성하고 있다. 요청의 양이 많아지면 더 많은 객체를 생성해야 하기 때문에 효율적이지 않아 보인다.반환되는 클래스의 인스턴스를 1개만 생성하도록 해 그 참조값을 반환 값으로 줄 수 있다면 더 효율적이지 않을까? 이것이 싱글톤 패턴..
[Spring 핵심 원리 이해] 3. 스프링 컨테이너와 스프링 빈
·
Spring
저번 시간에 애플리케이션 전체의 구성하는 AppConfig가 어떻게 제어의 역전과 의존관계 주입을 할 수 있는지그리고 스프링을 이용한 스프링 컨테이너와 스프링빈으로 AppConfig를 어떻게 활용할 수 있는지 알아보았다. 이번 시간에는 스프링 컨테이너와 스프링 빈에 대해서 조금 더 알아보도록 하자! 1. 스프링 컨테이너 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 이런 코드를 통해서 우리는 OrderApp과 MemberApp에 스프링 컨테이너를 활용했었다. 이 중 ApplicationContext를 우리는 스프링 컨테이너라고 한다. 그런데 ApplicationContext와 A..
[Spring 핵심 원리 이해] 2. 객체 지향 원리 적용
·
Spring
해당 포스팅은 https://camuscoding.tistory.com/6 [Spring 핵심 원리 이해] 1. 예제 만들기해당 포스팅은 인프런에서 강의중이신 김영한 선생님의 스프링 강의를 듣고 복습하는 목적으로 작성되었습니다.https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%Bcamuscoding.tistory.com이전 포스팅과 연결됩니다! + 역시나 김영한 선생님의 강의를 복습하는 용도입니다.저번 포스팅때 주문과 할인 도메인까지 함께 만들어 보았습니다. 이번 포스팅에는 우리가 지금까지 작성했던 코드가 어떤 문제점을 가지고 있는지 그리고 이 코드들을 스프링을 활용해..