티스토리 뷰

스프링 프레임워크 입문

개인적으로 웹 서비스를 개발하면서 다음과 같은 생각을 해보았었다.

JAVA언어와 친숙하기 때문에 언어는 JAVA로 개발하고 싶었고
그러므로 프레임워크는 되도록 JAVA언어 기반으로 돌아가는 프레임워크를 고르고 싶다.

하지만 이 꿈은 계속해서 스프링 프레임워크에 의해 좌절(?)했었다.
이는 이전에 레거시한 PHP로만 웹 생태계를 바라봤던 나의 시선 때문에 제약이 있던 사항이었다.
뭔가 체계적으로 프레임워크를 배우기 이전에 웹 생태계의 개념(MVC라든지...)을 알고 있었으면 좋았을 텐데
이건 뭐 php로 프런트엔드와 백엔드를 분절해서 보지 못하고 HTML처럼 php확장자 파일 안에서 모든 걸 다 해결하는 나의 시야로는 스프링 프레임워크를 배울 수 없었다.

일단... 스프링 프레임워크가 웹 환경에서만 국한되어 사용될 수 있는 환경자체로만 인식했던 것이 큰 오류였다.

스프링 프레임워크 쉽게 배우기

먼저, JAVA 언어로 무언가를 만들기 위해서는 new를 이용하여 객체를 생성해야 한다.
마찬가지로 아래의 웹툰에선 Java언어로 말을 만드는 과정을 유머러스하게 표현하였는데, 말을 만들기 위해서는 공장이 필요하다고 한다. 아마 개인적인 시각으로는 객체지향언어이기 때문에 클래스(틀)를 만들고 new를 해서 사용한다는 의미로 해석이 된다.

자바로 말 만들기

그런데 웹상에서 프로그램이 필요하면 서비스를 처리하는 클래스가 클래스를 직접 만들어야 할까?
필요한 클래스가 한둘은 아닐 테고 그 많은 클래스를 어떻게 관리하지? 객체를 필드로 선언해서 1개만 공유해도 될 것 같은데 그렇다면 자원을 공유할 때 문제가 생길 것 같으면서도 아닌 것 같고...

바로 이러한 개념에서 객체를 내 서비스 클래스에서 생성하지 않고 누군가가 내 서비스의 메서드를 호출하고 그 메서드에 클래스를 보내주는 방식으로 구현을 하고 싶었기 때문에 이러한 기술이 등장한 것 같다.

특징1. 객체 의존 주입 DI(Dependency Injection)

"객체를 생성하고 관리하는 건 내가(스프링 프레임워크) 할 테니까 넌 서비스만 해!"

이러한 프레임워크의 등장 덕분에 우리는 객체를 생성해서 어떻게 자원을 관리할지 생각해야 하는 부담이 줄었다. 이제부터는 스프링 프레임워크의 특징에 대해 간단하게 알아보도록 하자.

기존 java처럼 서비스 클래스에서 new하여 사용한 경우

기존에는 new로 객체를 생성하여 객체를 생성하고 삭제하는 연산을 모두 해당 서비스 클래스에서 삭제한 모습이다.

기존 java환경과 달리 스프링 컨테이너에게 객체 생성을 맡긴 경우

기존 java환경과는 다르게 스프링 컨테이너에게 객체 생성을 맡긴 경우, bean객체를 가져와서 서비스 클래스가 활용할 수 있도록 도와준다.
단, 기존에 bean객체는 싱글톤 패턴 기반으로 관리된다는 것에 유의한다.

(처음에는 bean객체에 관해서도 모르고 시작했기 때문에 더 어렵게만 느껴지는 스프링프레임워크였다. bean객체에 관해서는 짤막하게 다음 포스팅에서 소개하도록 하겠다. 일단 모르는 개념이라면 자바에서 객체를 생성하는 하나의 규약인데 이 규약을 지켜 생성되는 객체를 bean이다 하는 정도만 보고 넘어갈 것!)

특징2. 관점 지향 프로그래밍 Aspect Oriented Programming

특징3. MVC패턴의 용이

특징4. 트랜잭션의 용이

특징5. 보안 (스프링 시큐리티)

특징2~5는 복습하는 대로 추가할 예정입니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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 31
글 보관함