Spring Framework 이란?
1. Spring Framework이란?
최대의 장점은 개발에 필요한 구조를 이미 코드로 만들어 놓았기 떄문에, 실력이 부족한 개발자라 하더라도 반쯤 완성한 상태에서 필요한 부분을 조립하는 형태의 개발이 가능하다!!
2. 스프링의 주요 특징
1) POJO(Plain Old Java Object)기반의 구성
스프링의 성격 자체가 가벼운 프레임워크지만, 그 내부에는 객체 간의 관계를 구성할 수 있는 특징을 가지고 있다.
스프링은 다른 프레임워크들과 달리 관계를 구성할 때 별도의 API등을 사용하지 않은 POJO의 구성만으로
가능하도록 제작되어 있다. 이것이 중요한 이유는 코드를 개발할 때 개발자가 특정한 라이브러리나
컨테이너의 기술에 종속적이지 않는다는 것을 의미한다. 개발자는 가장 일반적인 형태로 코드를 작성하고
실행할 수 있기 때문에 생산성에도 유리하고, 코드에 대한 테스트 작업 역시 좀더 유연하게 할수 있다는
장점이 생긴다.
2) 의존성 주입과 스프링
- 의존성이란? 하나의 객체가 다른 객체 없이 제대로 된 역할을 할수 없다는 것을 의미한다.
의존성은 이처럼 하나의 객체가 다른 객체의 상태에 따라 영향을 받는 것을 의미한다.
- 주입이란? 말그대로 외부에서 밀어 넣는것을 의미한다.
- 의존성 주입이란? 어떤 객체가 필요한 객체를 외부에서 밀어넣는 의미이다. 따라서 주입을 받는 입장에서는 어떤
객체인지 신경 쓸 필요가 없다. 어떤 객체에 의존하든 자신의 역할은 변하지 않는다.
와 같은 의미로 볼 수 있다.
스프링에서는 'ApplicationContext'라는 존재가 필요한 객체들을 생성하고, 필요한 객체들을
주입하는 역할을 해 주는 구조이다. 따라서 스프링을 이용하면 개발자들은 기존의 프로그래밍과
달리 객체와 객체를 분리해서 생성하고, 이러한 객체들을 엮는(wiring)작업을 하는 형태의
개발을 하게 된다. 스프링에서 ApplicationContext가 관리하는 객체들을 빈(bean)이라는 용어로
부르고, 빈과 빈 사이의 의존관계를 처리하는 방식으로 XML설정, 어노테이션 설정, java 설정
방식을 이용할 수 있다.
3) AOP(Aspect Oriented Programming)
좋은 개발환경의 중요 원칙은 '개발자가 비즈니스 로직에만 집중할 수 있게 한다.' 이다.
이 목표를 이루기 위해선 가장 기본적으로 반복적인 코드의 제거가 있다. 스프링은 프레임워크를 이용한 개발에도
이러한 반복적인 코드를 줄이고, 핵심 비즈니스 로직에만 집중할 수 있는 방법을 제공한다.
대부분의 시스템이 공통으로 가지고 있는 보안이나 로그, 트랜잭션과 같이 비즈니스 로직은 아니지만,
반드시 처리가 필요한 부분을 스프링에서는 '횡단 관심사'라고 한다. 스프링은 이러한 횡단 관심사를 분리해서
제작하는 것이 가능하다. AOP는 이러한 횡단 관심사를 모듈로 분리하는 프로그램의 패러다임이다.
AOP의 장점: ㄱ) 개발자는 핵심 비즈니스 로직에만 집중해서 코드를 개발할 수 있게 되고,
ㄴ) 각 프로젝트마다 다른 관심사를 적용할 때 코드의 수정을 최소화 시킬수 있으며,
ㄷ) 원하는 관심사의 유지보수가 수월한 코드를 구성할 수 있다.
4) 트랜잭션의 지원
데이터베이스를 이용할 때 반드시 신경 써야 하는 부분은 하나의 업무가 여러 작업으로 이루어지는 경우의 트랜잭션
처리이다. 스프링은 이런 트랜잭션의 관리를 어노테이션이나 XML로 설정할 수 있기 때문에 개발자가 매번 상황에
맞는 코드를 작성할 필요가 없도록 설계 되어 있다.