작심삼일러의 스프링 시작하기(1)

서은경·2022년 7월 27일
0

Spring

목록 보기
4/43

초심자의 마음으로 (몇번째인지 모르겠지만) 스프링 샅샅이 파헤치기 시작 ~~!

스프링이란?

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

여기서 프레임워크란 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조라고 사전적 정의가 되어있는데 쉽게 말하면 틀이다.
예를 들어 집을 짓는다고 가정했을 때 옷장, 침대, 가구가 라이브러리라면 기본적인 골격을 갖춘 집을 프레임워크라고 보면 쉽겠다.
라이브러리 : 가져다가 씀!
프레임워크 : 기초 틀에 얹어서 만듦!

(이 개념이 처음에 잘 헷갈렸는데 얄코님 강의가 많이 도움이 되었다)

스프링의 주요 특징으로는 아래와 같다.

  • 의존 주입(Dependency Injection : DI) 지원
  • AOP(Aspect-Oriented Programming) 지원
  • MVC 웹 프레임 워크 제공
  • JDBC, JPA 연동, 선언적 트랜잭션 처리 등 DB 연동 지원
  • 스케줄링, 메시지 연동(JMS), 이메일 발송, 테스트 지원 등 ..

이 외에도 자바 기반의 어플리케이션을 개발하는데 필요한 다양한 기능 제공한다.
스프링 프레임워크를 이용해서 웹 어플리케이션을 개발할 때에는 스프링만 단독 사용하기보단 여러 스프링 관련 프로젝트를 함께 사용한다.

  • 스프링 데이터 : 적은 양의 코드로 데이터 연동을 처리할 수 있도록 도와주는 프레임워크이다. JPA, 몽고DB, 레디스 등 다양한 저장소 기술을 지원한다.
  • 스프링 시큐리티 : 인증/인가와 관련된 프레임워크로서 웹 접근 제어, 객체 접근 제어, DB/오픈ID/LDAP 등 다양한 인증 방식, 암호화 기능을 제공한다.
  • 스프링 배치 : 로깅/추적, 작업 통계, 실패 처리 등 배치 처리에 필요한 기본 기능을 제공한다.

스프링의 핵심 기능?

스프링의 핵심 기능은 객체를 생성하고 초기화하는 것이다. (관련 기능은 ApplicationContext라는 인터페이스에 정의되어 있음)
ApplicationContext(또는 BeanFactory)는 빈 객체의 생성, 초기화, 보관, 제거 등을 관리하고 있어서 스프링 컨테이너라고도 부른다.

AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class);
Greeter g = ctx.getBean("greeter", Greeter.class);

스프링 컨테이너는 내부적으로 빈 객체와 빈 이름을 연결하는 정보를 갖는다.
이름과 실제 객체의 관계뿐만 아니라 실제 객체의 생성, 초기화, 의존 주입 등 객체 관리를 위한 다양한 기능을 제공한다.

싱글톤 객체

싱글톤은 단일 객체를 의미하는 단어이다. 스프링은 기본적으로 한 개의 @Bean 어노테이션에 대해 한 개의 빈 객체를 생성하는데 이 때 빈 객체는 싱글톤 범위를 갖는다고 표현한다.

Greeter g1 = ctx.getBean("greeter", Greeter.class);
Greeter g2 = ctx.getBean("greeter", Greeter.class);
System.out.println("(g1 == g2) = " + (g1 == g2));

// 스프링은 싱글톤 객체이기 때문에 출력결과는 true이다

0개의 댓글