-
Spring Framework 와 친해지기개발 2020. 1. 17. 18:25
[ 도입 ]
Java와 Database 기초부터 시작해서 JDBC와 그들을 활용한 Servlet과 JSP와 더불어
FrontEnd로 HTML, CSS, JS를 속기로 익히고, 작은 프로젝트들을 팀과 함께 수행하면서 부족한 점을 많이 느껴
이번 Spring Framework를 배우면서 차근차근 블로그에 정리해 보고자 한다.
[ Spring Framework ]
누가 당장 나에게 Framework가 무엇이냐고 물어본다면
레고를 조립할때 블럭을 쌓아가는 레고판과 비슷한 존재라는 막연한 말만 떠오른다.
그래서 검색을 해 보았다.
애플리케이션 개발에 바탕이 되는 템플릿과 같은 역할을 하는 클래스들과 인터페이스의 집합
이라는 말이 나온다. 음,,, 어느 정도 느낌은 온다.
정보처리기사를 준비하면서 막연하게 듣기 시작해서 지금은 저렇게 쓰는거구나 느끼기도 하고
지금은 주구장창 쓰는 MVC구조를 손쉽게 쓸 수 있게 한다는 개념부터 시작해서,
포맷과 출력장치를 유연하게 변경할수 있는 애플리케이션 로그 기능을 제공하는 것 등을 말한다고 한다.
하지만 스프링 프레임워크는 좀더 더 넓은 개념인 Application Frameword 로 볼 수 있는데,
특정 계층, 기술, 업무 분야의 국한되지 않고 전 영역을 포괄하는 범용적인 프레임 워크이다.
애플리케이션 프레임워크는 애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로
진행하는데 일차적인 목표를 두는 프레임워크이다.
스프링 프레임워크란 자바 엔터프라이즈 개발을 편하게 해주는
경량급 애플리케이션 프레임워크 이며,
종속 객체를 생성해주고, 조립해주는 도구라고 볼 수 있다.
[ Spring Framework 특징]
스프링의 특징을 정리해 보고자 한다.
1. DI (Dependancy Injection / 의존성 주입) // 의문점 @어노테이션 써서 쓰는 DI주입
설정파일이나 어노테이션을 통해 객체간 의존관계를 설정하여 개발자가 직접
의존하는 객체를 생성할 필요가 없다.
방법 3. 의존성을 입력 받는 일반 메소드를 만들고 이를 통해 의존성을 주입
2. AOP (Aspect Oriented Programming / 관점 지향 프로그래밍)
어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각
모듈화 하겠다는 것. 비즈니스 메소드마다 반복되는 공통 로직을 분리하여 관리하는 것이다.
3. Spring JDBC
Mybatis나 Hibernate 등의 데이터베이스를 처리하는 영속성 프레임워크와 연결 할 수 있는
인터페이스를 제공한다.
4. Spring MVC
MVC 디자인 패턴을 통해 웹 어플리케이션의 Model, View, Controller 사이의 의존 관계를
DI 컨테이너에서 관리하여 개발자가 아닌 서버가 객체들을 관리하는 웹 어플리케이션을
구축 할 수 있다.
5. POJO (Plain Old Java Object)
자바 객체로 다른 객체와 서로 관계가 설정(상속, 구현) 되어 있지 않은 하나의 객체
6. IOC(Inversion of Control)
제어의 역행이라는 뜻으로 객체의 관계를 개발자가 아닌 컨테이너가 설정대로 처리하는 것으로
어플리케이션의 느슨한 결합을 도모한다. 대표적으로 Tomcat이 있다.
[ Spring Framework의 구성 모듈 ]
1. Core Container
Spring의 근간이 되는 IoC 또는 DI 기능을 지원하는 영역을 담당
BeanFactory를 기반으로 Bean 클래스들을 제어할 수 있는 기능을 지원한다
2. Data 접근 계층
JDBC나 데이터 베이스에 연결하는 모듈, Data 트랜잭션에 해당하는 기능을 담당하여
영속성 프레임 워크의 연결을 담당한다.
3. Web 계층
Spring Framework 에서 Servlet, Struts등 웹 구현 기술과의 연결점을 MVC 구성으로
지원하기 위해 제공하는 모듈 계층이다.
4. AOP 계층
Spring에서 각 흐름 간 공통된 코드를 한쪽으로 빼내어 필요한 시점에 해당 코드를
첨부하게 하기 위해 지우너하는 계층으로, 별도의 proxy를 두어 동작한다.
[ Spring Framework의 동작 방식 ]
사용자로부터 요청이 들어오면 가장 먼저 반응하는 쪽은 바로 DispatcherServlet이다.
그 다음으로 Controller에 연결하기 위해 HandlerMapping을 참조
Controller로 넘어간 요청은 Service를 호출하여 필요한 데이터들을 DAO를 통해 DB로 가져온다.
ModelAndView라는 비유하자면 그릇과 같은 객체에 담아 다시 DispatcherServlet에 반환해요.
그리고 ViewResolver를 통해서 비로소 View와 연결되고 사용자에게 출력되는 것이다.
참조:
https://opentutorials.org/course/2428/13594
https://ryumso86.tistory.com/16
https://steady-snail.tistory.com/66
'개발' 카테고리의 다른 글
협업도구와 친해지기 [ STS 와 Git + 소스트리 활용 ] (6) 2020.01.28 Spring 설정 (0) 2020.01.22 TDD와 친해지기 (0) 2020.01.17 안녕하세요 (0) 2020.01.16