Spring - 예제 코드로 시작하기
기본적인 스프링 구조를 알아보기 위한 예제 코드를 실행해본다. 파일을 3개 생성한다.
- Greeter.java - 콘솔에 간단한 메시지 출력할 클래스
- AppContext.java - 스프링 설정 파일
- Main.java - 메인 메서드로 Greeter, 스프링 실행하는 클래스
package example; public class Greeter { private String format; public String greet(String guest) { return String.format(format, guest); } public void setFormat(String format) { this.format = format; } }
package example; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppContext { @Bean public Greeter greeter() { Greeter g = new Greeter(); g.setFormat("%s, 안녕하세요!"); return g; } }
package example; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main { public static void main(String[] args) { // 설정 정보를 이용해 bean 객체 생성 AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class); // bean 객체를 제공 Greeter g = ctx.getBean("greeter", Greeter.class); String msg = g.greet("스프링"); System.out.println(msg); ctx.close(); } }
실행하면 콘솔에 스프링, 안녕하세요! 를 출력한다.
스프링은 객체 컨테이너
- 위 코드에서 중요한 것은
AnnotationConfigApplicationContext
클래스이다. 이 클래스는BeanFactory
,ApplicationContext
라는 인터페이스를 구현한 클래스 중 하나다. - 이 클래스는 자바 annotation을 이용하여 클래스로부터 객체 설정 정보를 가져온다. 이 외에도 XML로부터 객체 설정 정보를 가져오는
GenericXmlApplicationContext
, 그루비 코드를 이용해 설정 정보를 가져오는GenericGroovyApplicationContext
등이 있다.
어떤 구현 클래스를 사용하든, 각 구현 클래스는 설정 정보로부터 빈(Bean)이라 불리는 객체를 생성하고 그 객체를 내부에 보관한다. 그리고
getBean()
이라는 메서드를 실행하면 해당하는 bean 객체를 제공한다.ApplicationContext나 BeanFactory의 경우 빈 객체를 생성, 보관, 초기화, 보관 등을 관리하고 있어서 컨테이너라고 부른다.
싱글톤 객체
- 별도 설정이 없을 경우 스프링은 한 개의 bean객체만을 생성하며, 이 때 bean객체는 싱글톤 범위를 갖는다고 표현할 수 있다. 스프링은 기본적으로 한 개의 @Bean annotaion에 대해 한 개의 bean객체를 생성한다.