ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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주입

    설정파일이나 어노테이션을 통해 객체간 의존관계를 설정하여 개발자가 직접

    의존하는 객체를 생성할 필요가 없다. 

     

    방법 1. 의존성을 주입받는 Setter 메소드를 만들어서 주입

     

    방법 2. 필요한 의존성을 포함하는 클래스에 생성자를 만들어서 주입

     

    방법 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의 구성 모듈 ]

     

    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의 동작 방식 ]

     

     

     

    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

    댓글

Designed by Tistory.