스프링 프레임워크 (1)

Just Do It·2022년 2월 4일
0

CS 면접 준비

목록 보기
4/4

1. 스프링 프레임워크란?

  • 자바엔터프라이즈 개발을 편하게 해주는 경량급 오픈소스 어플리케이션 프레임워크
  • 경량 자바 어플리케이션 프레임워크
    -> 목표: POJO 기반(간단한 java 객체,나중에 다룰 예정) Enterprise Application 개발을 쉽고 편하게 할 수 있게 해줌.
    -> Java 어플리케이션을 개발하는데 필요한 하부구조(Infrastructure)(???)를 포괄적으로 제공(구체적인 예시를 봐야 뭔 내용인지 알 수 있을 듯)
    -> Spring이 하부 구조를 처리하기 때문에 개발자는 어플리케이션 개발에 집중할 수 있다.(어노테이션 등 스프링에서 제공해주는 것들이 하부구조를 처리한다고 이해하면 될까?)
  • 간단히 스프링이라고 불린다.
  • 공적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공한다.

2. Spring vs Spring MVC vs Spring Boot

spring 과 spring mvc, spring boot는 서로 다른 모듈이며, 각각의 모듈은 서로 다른 문제들을 해결한다.

1. Spring

Spring 의 가장 중요한 특징은 의존성 주입(Dependency Injection)이다. 모든 스프링 모듈들의 핵심에는 의존성 주입이나 IOC(Inversion of Control)(???)가 있다.
-> 중요한 이유: DI나 IOC(추후에 정리) 를 적절히 사용하면 느슨하게 결합된 어플리케이션들을 개발할 수 있기 때문-> 단위테스트를 쉽게 할 수 있다.

의존성 주입을 하지 않은 Controller 내부 예제

MemberService memberService=new MemberService();

위와 같이 인스턴스를 생성해줘야 하며 이는 강하게 결합됨을 의미한다.


의존성 주입을 사용한 Controller 예제

@Service
public class MemberService{
  ...
}
@Controller
public class MemberController{
	@Autowired
    private MemberService memberService;
}

@Service(Component 어노테이션)을 사용해서 스프링 프레임 워크에 '너가 관리하는 빈(Bean)임. 잘 관리하셈' 이렇게 알려준다.
@Autowired를 사용해서 스프링 프레임워크에 '이 타입과 맞는거 자동으로 연결시켜줘' 라고 말해준다.
위와 같은 경우는 MemberService 인스턴스를 생성해서 controller의 @Autowired가 선언된 곳에 주입한다.

Spring이 해결하는 문제 2가지

  • 중복 코드 또는 반복 코드를 줄일 수 있다.
  • 다른 프레임워크들을 통합시켜 주는 일을 해준다.

2. Spring MVC

Spring MVC의 핵심 역할

Spring MVC 프레임 워크는 디커플된 웹 애플리케이션 개발 방법을 제공한다. Dispatcher Servlet, ModelAndView, View Resolver 와 같은 단순 개념을 이용해서 웹 애플리케이션 개발을 쉽게 할 수 있도록 도와준다


  • Dispatcher Servlet이란?
    • 가장 앞단에서 HTTP프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)
  • ModelAndView란?
    • 컨트롤러의 처리결과를 보여줄 view 와 해당 페이지에 전달할 값을 저장할 용도로 사용하는 객체이다. org.springframework.web.servelt 패키지에 속해있으며 간단한 코드는 아래와 같다.
      public class ModelAndView{
      	private Object view;
        	private ModelMap model;
      	...
      } 
  • View Resolver란?
    • View 이름으로부터 사용할 View Object를 매핑하는 일을 한다.
    • 특정 View Resolver를 등록하지 않는다면, DispatcherServlet은 기본 viewResolver인 InternalResourceView를 사용한다.

참고 블로그

WeareSoft 님 깃허브
멋진 태혁님
망나니 개발자님
gyu님 블로그
[cheers_hena님 블로그]

(https://cheershennah.tistory.com/107)

profile
조급해 하지 말고 한 계단 한 계단 오르기

0개의 댓글