뚜벅이 한걸음

스프링 프레임워크 1 본문

Spring

스프링 프레임워크 1

뚜벅뚜벅뚜벅이 2022. 7. 11. 19:46
반응형

1. 스프링 프레임워크란?

- 자바플랫폼을 위한 오픈소스애플리케이션 프레임워크

-엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션

: 엔터프라이즈급이라고 이야기하는 것은 기업체에서 대규모로 사용할 수있다는 것을 말한다.

- 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고, 조립해주는 도구

2. 스프링 프레임워크의 특징

1. 경량 컨테이너로 애플리케이션 객체의 생명 주기와 설정을 포함하고 직접 관리한다.

2. POJO방식으로 크기와 부하의 측면에서 경량이다.

: Plain Old Java Object (POJO) 방식은 자바의 기본인 객체지향에 중점을 두면서 환경에 종속되지않는 방식을 말한다.

다른 블로그에 쓰여진것을 참고하였다.


왜 POJO를 지향해야 하는가?

스프링 프레임워크 이전에는 원하는 엔터프라이즈 기술이 있다면 그 기술을 직접적으로 사용하는 객체를 설계했습니다. 그리고 이러한 개발 방식이 만연하고 있었습니다. 특정 기술과 환경에 종속되어 의존하게 된 자바 코드는 가독성이 떨어져 유지보수에 어려움이 생겼습니다. 또한, 특정 기술의 클래스를 상속받거나, 직접 의존하게 되어 확장성이 매우 떨어지는 단점이 있었습니다. 이 말은 객체지향의 화신인 자바가 객체지향 설계의 장점들을 잃어버리게 된 것입니다.

그래서 POJO라는 개념이 등장했습니다. 본래 자바의 장점을 살리는 '오래된' 방식의 '순수한' 자바객체 말입니다.

그럼 특정 기술을 사용하고 싶다면? (스프링이 POJO를 유지하면서 Hibernate를 사용할 수 있는 이유) - PSA

하지만 Hibernate는 스프링 개발에서 많이 사용하고 있는 기술입니다. 특정 기술에 종속적이면 POJO가 아니라면서 스프링에서는 어떻게 가능한 걸까요? 바로 스프링에서 정한 표준 인터페이스가 있기 때문입니다. 스프링 개발자들은 ORM이라는 기술을 사용하기 위해서 'JPA'라는 표준 인터페이스를 정해두었습니다. 그리고 이제 여러 ORM 프레임워크들은 이 JPA라는 표준 인터페이스 아래, 구현되어 실행됩니다. 이것이 스프링이 새로운 엔터프라이즈 기술을 도입 하면서도 POJO를 유지하는 방법입니다. (그리고 이런 방법을 스프링의 PSA라고 얘기합니다.)


3. 제어 역행(IoC)을 지원

- 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.

: 기존에 개발을 할때는 개발자가 객체를 생성하고, setter를 이용하여 변수값을 넣었다. 이것을 제어의 순행이라고한다.

: 제어의 역행은 개발자는 설정정보만 xml에 입력을하고 생성은 프레임워크가 담당하는 것이다.

예를 들어 xml에 bean을 만들고 만들어 둔 bean을 호출하면 개발자는 '객체를 생성하라' 라는 명령만했을뿐인데 ioc컨테이너가 그 시점에서 객체를 만드는 것이다.

※Ioc 컨테이너

:개발자가 해오던 인스턴스의 생성부터 소멸까지의 인스턴스 생명주기를 관리하는 기능.

: 객체관리 주체가 프레임워크(Container)가 되기 때문에 개발자는 로직에 집중할 수 있는 장점이있다 .

4. 의존성 주입(DI : Dependency Injection)을 지원

- 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.

5. 관점지향(AOP) 프로그래밍을 지원

- 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.

6. 스프링은 영속성과 관련된 다양한 API를 지원한다.

- iBATIS나 하이버네이트 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.

7. 스프링은 확장성이 높다.

- 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.

참조: https://siyoon210.tistory.com/120

 

반응형