일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 예외처리
- 제네릭
- 오라클
- cursor문
- Java
- 예외미루기
- 추상메서드
- 생성자오버로드
- 자동차수리시스템
- GRANT VIEW
- 자바
- 정수형타입
- 집합_SET
- abstract
- 대덕인재개발원
- 컬렉션프레임워크
- 참조형변수
- 인터페이스
- EnhancedFor
- NestedFor
- 어윈 사용법
- 메소드오버로딩
- 컬렉션 타입
- 환경설정
- 다형성
- exception
- oracle
- 한국건설관리시스템
- 객체 비교
- 사용자예외클래스생성
- Today
- Total
거니의 velog
(1) 스프링 프레임워크 시작하기 본문
* 앞에서 모델2 구조로 웹 애플리케이션을 구현해 봤다. 모델2 기반으로 애플리케이션을 개발할 경우 개발과 유지관리가 모델1 방식보다 쉽다. 하지만 새로운 애플리케이션을 개발할 때마다 일일이 처음부터 다시 개발해야 한다는 단점이 있다. 모든 웹 애플리케이션에서 필요한 공통 기능들을 각각 처음부터 다시 개발해야 한다는 것은 비효율적이다.
* 이보다 더 좋은 방법은 애플리케이션 개발 시 일방적인 웹 애플리케이션에서 많이 사용하는 기능은 미리 만들어서 제공하고, 그 외에 필요한 부분만 추가 및 수정하는 것이다. 이렇게 하면 훨씬 효율적일 뿐만 아니라 일정한 형식에 따라 개발을 진행하므로 표준화가 이루어져 생산성도 높일 수 있다.
* 애플리케이션 규모가 커질 수록 각 기능을 개발자가 따로 개발하는 것보다 표준화된 방법으로 개발하는 것이 유리하다. 따라서 지금은 대부분의 웹 애플리케이션을 스프링이나 스트러츠 같은 프레임워크 환경에서 개발한다.
1. 프레임워크란?
* 프레임워크(Framework)의 사전적 의미는 '어떤 것을 구성하는 구조 또는 뼈대'이다.
소프트웨어적 의미로는 '기능을 미리 클래스나 인터페이스 등으로 만들어 제공하는 반제품' 정도로 해석할 수 있다. 즉, 어느 정도 완성된 상태로 제공하는 기능인 셈이다.
* 우리는 현실에서 컴퓨터를 사용하다가 비디오 카드가 고장 나면 어떻게 하는가? 비디오 카드를 사서 교체하기만 하면 된다. 비디오 카드는 미리 만들어진 상태로 제공된다. 이처럼 프레임워크도 애플리케이션 개발 시 자주 사용하는 기능을 클래스나 인터페이스 등으로 미리 어느 정도 만들어서 제공하면 개발자가 자신의 상황에 맞게 변형 및 추가해서 이를 사용하는 것이다. 그러면 처음부터 개발할 필요 없이 자신이 원하는 애플리케이션을 짧은 시간에 만들 수 있다. 그리고 일정한 틀 속에서 개발을 하기 때문에 개발 후 유지보수 및 기능의 확장성에서도 고품질이 보장된다.
* 즉, 프레임워크를 사용하는 이유를 한마디로 정리하면 일정한 기준에 따라 개발이 이루어지므로 개발 생산성과 품질이 보장된 애플리케이션을 개발할 수 있기 때문이다.
(1) 스프링 프레임워크
* 프레임워크 중 현재 가장 많이 사용되는 것이 스프링 프레임워크(Spring Framework)이다. 스프링 프레임워크(이하 스프링)는 자바 웹 애플리케이션 개발을 위한 오픈 소스 프레임워크로, 기존 프레임워크보다 가벼운 경량 프레임워크(Light Weight Framework)이다.
* 또한 스프링은 경량 컨테이너(Light Weight Container)라고도 부른다. '컨테이너'라고 하면 대표적인 것으로 톰캣을 들 수 있다. 톰캣은 서블릿 컨테이너라고 부르는데, 그 이유는 톰캣을 실행하면 톰캣은 서블릿의 생성, 초기화, 서비스 실행, 소멸에 관한 모든 권한을 가지고 서블릿을 관리하기 때문이다.
* 스프링도 마찬가지이다. 애플리케이션에서 사용되는 여러 가지 빈(클래스 객체)을 개발자가 아닌 스프링이 권한을 가지고 직접 관리한다. 스프링 이전에 사용되던 프레임워크로 EJB(Enterprise JavaBeans, 엔터프라이즈 자바빈즈)라는 것이 있는데, EJB는 실행 시 무거워 여러 가지 문제를 일으키는 단점이 있다. 스프링은 이런 EJB의 단점은 개선하고 좋은 점은 더 발전시켜서 탄생한 프레임워크이다.
[EJB란?]
- 기업 환경 시스템을 구축하기 위한 서버 측 컴포넌트 모델, 즉 애플리케이션의 비즈니스 로직을 가진 서버 애플리케이션을 의미한다.
* 스프링의 특징은 다음과 같다.
- EJB보다 가볍고 배우기도 쉬우며 경량 컨테이너의 기능을 수행한다.
- 제어 역행(IoC : Inversion of Control) 기술을 이용해 애플리케이션 간의 느슨한 결합을 제어한다.
- 의존성 주입(DI : Dependency Injection) 기능을 지원한다.
- 관점 지향(AOP : Aspect-Oriented Programming) 기능을 이용해 자원 관리를 한다.
- 영속성과 관련된 다양한 서비스를 지원한다.
- 수많은 라이브러리와의 연동 기능을 지원한다.
다음 그림은 스프링의 특징을 그림으로 나타낸 것이다.
[용어 정리]
* 의존성 주입(DI)이나 제어 역행(IoC), 관점 지향(AOP) 기능은 EJB에서부터 이미 사용된 기술들이므로
여기서는 간단히 용어만 설명하고 넘어가자.
- 의존성 주입 : 클래스 객체를 개발자가 코드에서 생성하지 않고 프레임워크가 생성하여 사용하는 방법이다.
- 제어 역행 : 서블릿이나 빈 등을 개발자가 코드에서 생성하지 않고 프레임워크가 직접 수행하는 방법이다.
- 관점 지향 : 핵심 기능 외 부수 기능들을 분리 구현함으로써 모듈성을 증가시키는 방법이다.
다음 그림은 스프링에서 제공하는 주요 기능을 나타낸 것이다.
* 여기서 스프링 Core 기능은 스프링의 다른 기능을 수행하는 데 필요한 기반 기능을 제공한다. 그리고 스프링 MVC 기능을 이용해 애플리케이션을 MVC로 쉽게 개발할 수 있다. 그 외 스프링의 주요 기능에 대한 상세한 설명은 다음 표를 참고하길 바란다.
<스프링의 주요 기능>
스프링 기능 | 설명 |
Core | 다른 기능과 설정을 분리하기 위한 IoC 기능을 제공한다. |
Context | 스프링의 기본 기능으로서 애플리케이션의 각 기능을 하는 빈(Bean)에 대한 접근 방법을 제공한다. |
DAO | JDBC 기능을 좀 더 편리하게 사용할 수 있도록 한다. |
ORM | 하이버네이트나 마이바티스 같은 영속성 관련 프레임워크와 연동된 기능을 제공한다. |
AOP | 관점 지향 기능을 제공한다. |
Web | 웹 애플리케이션 개발에 필요한 기능을 제공한다. |
WebMVC | 스프링에서 MVC 구현에 관련된 기능을 제공한다. |
2. 스프링 프레임워크 환경 설정하기
* 현재는 메이븐 같은 자동화 도구를 사용해 스프링 프레임워크 개발과 관련된 설정을 자동으로 할 수 있다. 그러나 이번에는 스프링 프레임워크의 기본 기능을 익히기 위해 자동 설정이 아닌 수동으로 이클립스 프로젝트에 스프링 프레임워크 3.0 버전을 설정해 보자. 스프링에 대해 이미 어느 정도 익숙한 사람이라면 이번을 건너뛰고 스프링 프레임워크 기능을 설정해도 좋다.
* 스프링 개발 환경 설정은 간단하다. 다음과 같이 새 프로젝트 pro18을 만들고 다음의 스프링 3.0 라이브러리 파일을 구해서 /WEB-INF/lib 폴더에 붙여 넣으면 애플리케이션에서 바로 사용할 수 있다.
* 그럼 이제 스프링 라이브러리 기능 중 의존성 주입과 제어 역전에 대해 알아보자.
'Java_Spring Framework part1' 카테고리의 다른 글
(6) 스프링 MVC 기능 1 (0) | 2023.10.03 |
---|---|
(5) 스프링 AOP 기능 (0) | 2023.10.03 |
(4) 스프링 의존성 주입과 제어 역전 기능 3 (0) | 2023.10.03 |
(3) 스프링 의존성 주입과 제어 역전 기능 2 (0) | 2023.10.02 |
(2) 스프링 의존성 주입과 제어 역전 기능 1 (0) | 2023.09.27 |