ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링의 특징
    혼자서 공부하기/Spring 2016. 3. 15. 00:01
    728x90
    반응형
    SMALL


     ■ 코드로 배우는 스프링웹프로젝트 정리 "


    1. 스프링 주요 특징


       ■ POJO 기반 

          = Plain Old Java Object

          = 스프링의 성격자체가 가벼운 즉, 경량 프레임워크이나 그 내부에는 객체간의 관계를 구성할 수 있는 특징을 가지고 있습니다. 스프링은 다른 프레임워크와 달리 이 관계를 구성할때 별도의 API등을 사용하지 않는 POJO의 구성만으로도 가능하도록 제작되어 있습니다. 

          = 쉽게 말해, 일반적인 Java 코드를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있다는 말!!


       ★ 코드를 개발할 댸 개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않다는 것을 의미


       ★ 개발자는 가장 일반적인 형태로 코드를 작성하고 실행할 수 있기 때문에 생산성에서도 유리하고 코드에 대한 테스트 작업 역시 좀 더 유연하게 할 수 있다는 장점


       

       ■ 의존성 주입(DI ; Dependency Injection)을 통한 객체간의 관계 구성

          = 스프링하면 가장 먼저 듣는말?


          ★ 의존성주입(DI ; Dependency Injection

          ★ 제어의역행(IoC; Inversion Of Control) 


          ♣ 제어의 역행???

             = 말 그대로 메소드나, 객체의 호출작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것

             = 스프링 만이 아닌 대부분의 프레임워크에서 사용하는 방법

             = 개발자는 필요한 부분을 개발해서 "끼워넣기"의 형태로 개발하고 실행! 

             예) 컴퓨터를 조립한다면, 

                 메인보드를 결정하고,

                 그에 맞는 부품들을 구매하게 됨.

                 = "각 부품간의 연결이나 호출" "메인보드"에서 "컨트롤"하기때문에, 각 부품은 이전과 다음의 관련 부품에 대한 고민없이 "제작"이 가능

                       

                 = 즉, 개발자는 프레임워크에 필요한 부품을 개발하고, 조립하는 방식의 개발

                 

                 = 이렇게 조립된 코드의 최종 호출은 개발자에 의해서 이뤄지지 않고 프레임워크 내부에서 결정된 대로 이뤄지게 되는 데 이를 "제어의 역행" 이라고 함.


          ★ 스프링은, 구조를 설계할 수 있도록 만들어 졌다는 뜻


          ★ 개발자가 부품을 만들어 조립하는 형태의 개발이 가능하다는 의미


          ♣ 의존성주입(DI; Dependency Injection)

             = 제어의 역행(IoC)가 일어날때 스프링이 내부에 있는 객체(스프링에서는 빈(Bean))들 간의 관계를 관리할 때 사용하는 기법

     

          ♧ 의존성? 

             = Dependency 

             = 어떤 객체가 혼자 일을 처리할 수 없다는 것

             = 만일 어떤 객체 A가 다른 객체 B의 도움을 받아야만 온전히 일을 처리할 수 있을 때, "A는 B에 의존적이다"라고 표현

             = Java에서는 일반적으로 인터페이스를 이용해서 이런 의존적인 객체의 관계를 최대한 유연하게 처리할수 있도록 노력



          ♣ 의존성주입(DI; Dependency Injection)

             = 의존적인 객체를 직접 생성하거나, 제어하는 것이 아닌 

                제어의 역행(IoC)으로 특정 객체에 필요한 객체를 외부에서 결정해서 연결시키는 것을 의미

             = 외부에서 필요한 객체를 결정하기 때문에 

                발자는 의존적인 객체들과의 관계를 직접 처리할 필요가 없고,

                            인터페이스를 활용해서 유연한 구조를 사용


          ★ 스프링은 

             의존성주입을 프레임워크에서 처리하기때문에 

             발자는 자신이 만드는 객체나 클래스외에는 신경쓰지않고 코드를 만들고 

                         자신의 코드에 필요한 객체는 스프링을 통해 주입받는 구조



          ◎ 의존성 주입의 종류

             1) 생성자를 통합 주입

             2) set 메소드를 이용한 주입




       ■ AOP 지원 (= Aspect Oriented Programming)


          ♣ 좋은 개발환경의 중요원칙 : 

             "개발자가 비즈니스 로직에만 집중할 수 있게 한다." ← Architect의 목적

             = 즉, "반복적인 코드 제거"


            반복적인코드 ? 

            = 시스템이 공통으로 가지는 보안/로그/트랜잭션, 반드시 처리가 필요한 부분을
               스프링에서는 횡단관심사(cross-concern)


          ♣ 스프링에서는 AOP를 AspectJ 문법을 통해 작성가능


             이를 통해 개발자1) 핵심 비즈니스 로직에만 집중해서 코드를 개발 할 수 있게 되었고

                                       2) 각 프로젝트마다 다른 관심사를 적용할 댸 코드의 수정을 최소화 시킬 수 있었으며

                                       3) 원하는 관심사의 유지보수가 수월한 코드를 구성할 있음.

                        


       ■ 트랜잭션의 지원


          ♧ 데이터베이스를 이용할 때 반드시 신경 써야 하는 부분은 하나의 업무가 여러 작업으로 이뤄지는 경우의 트랜잭션처리

          ♧ 트랜잭션의 처리는 상황에 따라서 복잡하게 구성될 수 있고, 아닐수 있는데 그때마다 코드를 이용해서 처리하는 작업은 개발자에게 상당히 피곤한 일!!!!


          ♣ 스프링에서는 이런 트랜잭션의 관리를 

             1) 어노테이션이나

             2) XML  으로 설정

             할 수 있기 때문에 개발자가 매번 상황에 맞는 코드를 작성할 필요가 없도록 설계됨.

    728x90
    반응형
    LIST

    '혼자서 공부하기 > Spring' 카테고리의 다른 글

    Spring RESTful  (0) 2017.10.08

    댓글

Designed by Tistory.