초심자의 마음으로 (몇번째인지 모르겠지만) 스프링 샅샅이 파헤치기 시작 ~~!
스프링이란?
스프링 프레임워크는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크이다.
여기서 프레임워크란 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조라고 사전적 정의가 되어있는데 쉽게 말하면 틀이다.
예를 들어 집을 짓는다고 가정했을 때 옷장, 침대, 가구가 라이브러리라면 기본적인 골격을 갖춘 집을 프레임워크라고 보면 쉽겠다.
라이브러리 : 가져다가 씀!
프레임워크 : 기초 틀에 얹어서 만듦!
(이 개념이 처음에 잘 헷갈렸는데 얄코님 강의가 많이 도움이 되었다)
스프링의 주요 특징으로는 아래와 같다.
이 외에도 자바 기반의 어플리케이션을 개발하는데 필요한 다양한 기능 제공한다.
스프링 프레임워크를 이용해서 웹 어플리케이션을 개발할 때에는 스프링만 단독 사용하기보단 여러 스프링 관련 프로젝트를 함께 사용한다.
스프링의 핵심 기능?
스프링의 핵심 기능은 객체를 생성하고 초기화하는 것이다. (관련 기능은 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이다