-
스프링의 특징혼자서 공부하기/Spring 2016. 3. 15. 00:01728x90반응형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