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