처음에 웹 프로그래밍을 배우면서 스프링 프레임워크를 배우면 꽤나 어렵다고 느껴진다.
분명 프로그램 개발을 더 쉽게 해준다고 했는데, 기존 방식에 비해 더 복잡하고 어려워 진듯한 기분이 들었다.
그래서 책이나 블로그 등을 찾으면서 정리한 내용을 올리고자 한다.
스프링 전에는 서블릿 방식으로 프로그램을 개발하였다.
그리다가 스프링이 나오게 되었고, 개발자들은 서블릿 방식이 아닌 스프링을 개발에 쓰는 경우가 많아졌다.
왜 스프링이 대세가 된 것일까?
프레임워크는 어플리케이션 개발을 쉽게 하기 위한 뼈대이다. 기본 클래스, 인터페이스 등을 제공한다.
일반적으로 개발자 각각의 능력의 차이가 큰 편이다. 그렇다 보니 구성원에 따라 프로젝트의 결과 차이가 생긴다.
이러한 것을 극복하기 위해서 프레임워크를 사용하게 된 것이다. 프레임워크의 구조 안 자신의 코드를 추가하는 방식으로 개발을 진행하면서 개발자가의 능력의 차이를 줄일 수 있게 된 것이다.
기본 구조가 있기 때문에 그 위에 코드만 붙이는 이케아 같은 반조립 가구 같은 형태로 개발이 가능하다.
회사 입장에서는 프레임워크 덕분에 일정한 품질이 보장되는 결과물을 얻을 수 있고,
개발자의 입장에서는 완성된 구조에 자신이 맡은 코드를 개발해서 넣어주는 형태이므로 개발 시간을 단축할 수 있다.
스프링은 다른 프레임워크에 비해 늦게 나왔지만, 하드웨어적 구성이 필요 없는 jar 파일을 등을 이용한 경량(light-weight) 프레임 워크로 대세가 되었다.
(스프링 전에는 하드웨어적 구성등이 필요한 프레임워크 등을 사용)
기존 프레임워크와의 차별성(스프링의 특징)
- 복잡하지 않은 프레임워크 : 일반 java의 클래스와 인터페이스를 이용하는 구조를 사용하고, 기존 EJB에 비해 가볍기 때문에 빠른 시간에 엔터프라이즈급의 시스템 작성 가능
- 전체 구조 설계 유용 : 기존에는 비즈니스 로직을 처리 설계는 개발자의 역량 따라 달랐지만, 스프링은 전체 설계하는 용도로 사용 가능(IoC 제어의 역행)
- 다른 프레임워크 혼용 : 프레임워크를 변경하는 경우 보통은 전체를 수정해야 하지만, 스프링은 통합이 되어 최소한의 수정이 가능. 가장 큰 장점은 기본 구조를 기반으로 여러 종류의 프레임워크를 함께 사용 가능
- 개발 생산성과 개발 도구의 지원 : 스프링은 처음에 이해해야 하는 부분이 많지만 결과적으로 코드의 양은 줄어들고, 유지보수에 있어서도 XML 설정 등을 이용.( 그래서 처음에 스프링을 배우는 경우에 어렵게 느껴지는 것이 당연)
스프링의 주요 특징
- POJO(Plain Old Java Object) 기반의 구성 : 관계를 구성할 때 별도의 API 등을 사용하지 않는 POJO의 구성만으로 가능하도록 제작 되어 있음. 자바 코드를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있음. 생산성에 유리하고, 코드에 대한 테스트 작업 역시 좀 더 유연하게 할 수 있다는 장점이 생긴다.
- 의존성 주입(DI-Dependency Injection)을 통한 객체 간의 관계 구성 : 제어의 역행(IoC-Invrsion Of Control)은 메소드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것을 의미, 의존성 주입은 제어의 역행이 일어날 때 스프링이 내부에 있는 객체(스프링에서는 빈(Bean)이라는 용어를 사용)들 간의 관계를 관리할 때 사용하는 기법
- 의존성 주입의 종류(애노테이션만으로 처리 가능)
- 생성자를 통한 주입
- set 메소드를 이용한 주입
- AOP(Aspect Oriented Programming)의 지원 : 보안이나 로그, 트랜잭션과 같이 비즈니스 로직은 아니지만, 반드시 처리가 필요한 부분을 스프링에서는 '횡단 관심사(Cross-concern)라고 하고, AOP는 이러한 횡단 관심사를 모듈로 분리하는 프로그래밍의 패러다임
- 트랜잭션의 지원 : 데이터베이스를 이용할 때 반드시 신경써야 하는 부분은 하나의 업무가 여러 작업으로 이뤄지는 경우의 트랜잭션 처리, 스프링은 이러한 트랜잭션의 관리를 애노테이션이나 XML로 설정할 수 있기 때문에 개발자가 매번 상황에 맞는 코드를 작성할 필요가 없도록 설계되었음
스프링의 특징을 다양하게 있지만, 기존의 프레임워크에 비해 가볍고, 개발자들에게 익숙한 자바 기반, 객체 구성 방식으로 많이 사용하게 되었다고 한다. 또한, 프로그램 개발 후 유지 보수를 더 쉽게 할 수 있게 되었다는 특징이 있다.
'Java | spring > Spring' 카테고리의 다른 글
Spring에서 JDBC가 아닌 MyBatis를 사용하는 이유 (0) | 2019.07.13 |
---|---|
Spring Mybatis 간단 설명 (0) | 2019.06.13 |
Spring 스프링 특징 : DI / POJO / AOP (0) | 2019.05.10 |
Spring STS, Maven 메이븐이란? (0) | 2019.05.10 |
스프링 프레임워크란? Spring framework (0) | 2019.05.10 |
댓글