Spring Boot 개발 (1) - Spring Configurations - LOG.INFO

본 포스트는 ‘John Thompson’의 ‘Spring Framework Beginner to Guru’강의를 바탕으로 공부 목적으로 정리하고자 작성하였습니다.

Summary

지난 포스트에서는 스프링 부트 프로젝트를 생성해보았습니다.

이번 포스트에서는 Spring의 Configuration을 구성하는 방법에대해 알아보도록 하겠습니다.

Spring Configurations?

스프링 프로젝트를 구축하였으면 설정 작업을 해야합니다. 여간 귀찮은 일이 아니며 초기에 시간이 많이 걸리는 이유 중 하나입니다. 하지만 설정만 잘 해놓는다면 후에 프로젝트를 편하게 진행할 수 있습니다.

  • Dependency 추가
  • Bean 설정
  • DB Connection 설정

설정 방법

XML 기반 설정

  • Spring Framework 2.0부터 적용
  • legacy Spring Application에서 흔하게 사용
  • Spring Framework 5.x에서 여전히 지원

(IntelliJ Ultimate Edition에서 사용 가능)

resources dir. (우클릭) 
-> new 
-> XML Configuration File 
-> Spring Config 
-> 파일 이름 설정

을 하면 아래와 같은 파일이 생깁니다.
( IntelliJ Community Edition이나 다른 IDE를 사용하시는 분들은 아래 코드를 복붙해주세요)

<!-- chuck-config.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

그렇다면 이제 bean을 생성해주겠습니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 'chuckNorrisQuotes'라는 이름의 ChuckNorrisQuotes type Bean 생성 -->
    <bean name="chuckNorrisQuotes" class="guru.springframework.norris.chuck.ChuckNorrisQuotes"/>
</beans>

그리고 Application Class에 가서 이 config 파일을 Import해주면 됩니다.

@ImportResource("classpath:chuck-config.xml")
public class JokeApplication {
    ...
}

Annotation 기반 설정

  • Spring Framework 3부터 적용
  • ‘Component Scans’를 통해 검색
  • Class-level의 Annotation을 참조
    • @Controller
    • @Service
    • @Component
    • @Repository

Java 기반 설정

  • Spring Framework 3부터 적용
  • Spring Beans를 Java class를 이용하여 정의
  • Configuration Class들에는 ‘@Configuration’ Annotation을 추가
    • method들은 public으로 선언
  • Spring Bean Class들에는 ‘@Bean’ Annotation을 추가
@Configuration
public class SpringConfig {

  @Bean
  public BeanClass1 beanClass1(){
    return new BeanClass1();
  }

  @Bean
  public BeanClass2 beanClass2(BeanClass1 beanClass1){
    return new BeanClass2(beanClass1);
  }
}

Groovy Bean Definition DSL 설정

  • Spring Framework 4부터 적용
  • Groovy를 통해 Bean 선언

그렇다면 어떤 것을 사용할까?

사실 위의 방법 중 어떤 것을 사용해도 무관합니다. 자신한테 편한 것을 사용하는 것이 가장 좋겠죠. 다만 최근 업계에서는 ‘Java 기반 설정’을 많이 사용한다고 합니다. 앞으로의 프로젝트에서도 Java 기반 설정을 사용할 예정입니다. (출처 : John Thompson)