스프링으로 간단한 환영 메시지를 출력하는 프로그램을 만들어보자.
이 과정에서 프로그램에 필요한 파일 구성과 스프링 설정과 빈(Baen) 객체에 대한 이해를 목표로 진행해보겠다.
Greeter.java: 콘솔에 간단한 환영 메시지를 출력하는 자바 클래스
AppContext.java: 스프링 설정 파일
Main.java: main() 메서드를 통해 스프링과 Greeter을 실행하는 자바 클래스
지난 포스팅에서 만들었던 프로젝트 폴더인 sp-chap01에서 시작하자.
src/main/java 폴더에 Greeter.java 파일을 생성한다.
New
>Other...
>Java
/Class
선택 >next
위처럼 Package란에 chap01, Name란에 Greeter.java를 입력하고 [Finish] 버튼을 클릭하면 파일이 정상적으로 추가된 것을 확인할 수 있다.
다음 내용을 적어보자.package chap01; public class Greeter { private String format; public String greet(String guest) { return String.format(format, guest); } public void setFormat(String format) { this.format = format; } }
작성 후 Ctrl + Shift + F 단축키를 사용하면 보기 편하게 정렬되니 참고하길 바란다.
greet() 메서드는 문자열을 파라미터로 받아와 String의 문자열 포맷을 이용해서 새로운 문자열을 생성한다.
setFormat() 메서드는 문자열 포맷을 지정한다.사용 예)
Greeter greeter = new Greeter(); // greeter 객체 생성 greeter.setFormat("%s, 반가워요!"); // 문자열 포맷 지정 String msg = greeter.greet("홍길동"); // msg = "홍길동, 안녕하세요!"
이제 스프링 설정 클래스를 작성해 볼 것이다.
파일 생성은 Greeter.java 생성과 비슷하니 생략한다.
chap01 패키지에 AppContext.java 파일을 만들고 다음과 같이 작성한다.package chap01; 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; } }
@Configuration 애노테이션은 해당 클래스를 스프링 설정 클래스로 지정한다.
@Bean 애노테이션은 메서드가 생성한 객체를 스프링이 생성하는 객체인 빈(Bean) 객체로 등록한다. 이 애노테이션을 붙인 메서드는 객체를 생성하고 초기화해야 한다.
이제 AppContext를 읽어와 사용할 Main.java를 작성할 것이다.
다음과 같이 작성해보자.package chap01; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class); Greeter g = ctx.getBean("greeter", Greeter.class); String msg = g.greet("홍길동"); System.out.println(msg); ctx.close(); } }
AnnotationConfigApplicationContext 클래스는 자바 설정에서 정보를 읽어와 빈 객체를 생성하고 관리한다.
AnnotationConfigApplicationContext 객체를 생성할 때 AppContext 클래스를 파라미터로 전달한다. 그럼 생성된 객체
ctx
는 AppContext 클래스에서 정의한 빈(Bean) 설정 정보를 읽어온다.getBean() 메서드는 AnnotationConfigApplicationContext가 자바 설정을 읽어와 생성한 빈(Bean) 객체를 검색할 때 사용한다. 첫 번째 파라미터는 빈 객체의 이름이고, 두 번째 파라미터는 검색할 빈 객체의 타입이다. 따라서 첫 번째 파라미터로 메서드 이름인 "greeter", 두 번째 파라미터로 생성한 객체의 리턴 타입이 Greeter이므로 Greeter.class를 전달한다.
Greeter 객체 greet 메서드에 "홍길동"이라는 문자열을 파라미터로 전달했으니 반환 값은 "홍길동, 반가워요!"이다. 이 값을
msg
에 저장하고 출력할 것이다.
Main.java 파일을 우클릭하고
Run As
>Java Application
버튼을 클릭하여 실행하면 "홍길동, 반가워요!"를 잘 출력한 것을 확인 할 수 있다.홍길동, 반가워요!
지금은 Eclipse를 기준으로 작성하고 있는데, 역시 IntelliJ가 더 편하다. 언제부터 IntelliJ를 기준으로 포스팅할 진 모르겠지만, 조만간일 것 같다. 😅
많은 개발자들에게 사랑받는 이유가 있다. IntelliJ를 아직 써보지 않았다면 써보기를 강력 추천한다.
- 초보 웹 개발자를 위한 스프링5 프로그래밍 입문 | 최범균님 저