[spring] 튜토리얼(4). 스프링 부트 없이 헬로월드 출력하기
메이븐 혹은 그레이들 프로젝트 생성 후, spring 의존 설정 끝냈다고 가정함
Step1. 필요 소스파일
다음과 같은 소스파일을 src/main/java 소스폴더에 생성한다. 패키지 이름은 자유.
-
Greeter.java : 문자열 2개 입력받고 데이터 포맷으로 하나로 합치고, 문자열로 다시 리턴하는 클래스
-
AppContext.java : 스프링 설정 파일, Greeter 클래스를 생성해 리턴하는 메소드를 bean 객체로 설정
-
Main.java : 스프링 실행, bean 객체를 얻어와서 문자열 입력후 콘솔에 출력
AppContext.java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
//@Configration : 해당 클래스를 스프링 설정 클래스로 지정할수 있음
@Configuration
public class AppContext {
//@Bean : 이 어노테이션이 달리면 해당 메서드가 생성한 객체를 스프링이 관리하는 빈 객체로 등록함
@Bean
public Greeter greeter() {
Greeter greeter = new Greeter();
greeter.setFormat("%s, 안녕하세요!");
return greeter;
}
}
Greeter.java
public class Greeter {
private String format;
public String greet(String guest) {
// 매개변수 guest 가 들어오면 format %s 같은 포맷 문자와 함께 문자열로 치환되서 출력
return String.format(format, guest);
}
public void setFormat(String format) {
// %s 같은 포맷이 포함된 문자열이 들어오면 현재 클래스의 format 문자열에 대입
this.format = format;
}
}
Main.java
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
AnnotationConfigApplicationContext applicationcontext = new AnnotationConfigApplicationContext(AppContext.class);
//독립 실행형 어플리케이션 콘텍스트 객체.
//매개변수는 @Configuration 어노테이션이 설정된 스프링 설정클래스
//스프링 설정 클래스에서 정의한 @Bean 설정 정보를 읽어와 객체를 생성하고 초기화한다.
Greeter greeter = applicationcontext.getBean("greeter", Greeter.class);
//getBean : @Bean 객체를 가져올때 사용
//파라미터1 : @Bean 애노테이션 메서드 이름인 Bean 객체의 이름
//파라미터2 : 가져올 Bean 객체의 타입 (클래스)
String msg = greeter.greet("스프링");
System.out.println(msg);
applicationcontext.close();
}
}
java.lang.IllegalStateException: Cannot load configuration class: 에러 해결방법
스프링 의존 버전 문제인것 같다. 최신버전으로 받으니 해결 되었다.
기존에 build.gradle 에 있던 spring 항목은 지우고
https://mvnrepository.com/artifact/org.springframework/spring-context 여기서 최신 버전으로 들어간다음에 Gradle(short) 항목에 있는 문장을 build.gradle 에 추가한다.