본문 바로가기
스프링 부트3

스프링 부트 3에서 Java Config 활용하기

by 굿센스굿 2024. 12. 4.
반응형

 

스프링 부트 3는 기존 XML 기반 설정을 Java Config로 대체하여 더욱 직관적이고 유지보수하기 쉬운 환경을 제공합니다. Java Config는 자바 코드로 모든 스프링 설정을 작성할 수 있도록 지원하며, 애너테이션 기반의 설정과 함께 유연한 구성 옵션을 제공합니다. 이 글에서는 스프링 부트 3에서 Java Config를 활용하는 방법과 실무에서 유용한 예제를 3가지 소개합니다.


1. Java Config란?

Java Config는 XML 대신 자바 클래스와 애너테이션을 사용하여 스프링 애플리케이션의 설정을 정의하는 방식입니다.
스프링 부트 3는 Java Config를 기본으로 채택하고 있으며, 이를 통해 다음과 같은 이점을 얻을 수 있습니다:

  • 가독성: 설정 코드가 자바 언어로 작성되어 쉽게 이해할 수 있습니다.
  • 형식 안전성: IDE에서 코드 완성과 컴파일 시점 오류를 지원합니다.
  • 유지보수성: XML 파일이 필요 없으며, 코드로 설정을 관리할 수 있습니다.

2. Java Config의 기본 구성

(1) @Configuration과 @Bean

Java Config에서 가장 기본이 되는 애너테이션은 @Configuration과 @Bean입니다.
예시: 간단한 Bean 등록

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {
    
    @Bean
    public String helloMessage() {
        return "Hello, Spring Boot 3!";
    }
}

AppConfig 클래스는 스프링 설정 클래스로 작동하며, helloMessage 메서드는 String 타입의 빈(Bean)을 등록합니다.

(2) 빈 주입과 활용

위에서 정의한 빈을 다른 클래스에서 주입받아 사용할 수 있습니다.

import org.springframework.stereotype.Service;

@Service
public class MessageService {
    private final String message;

    public MessageService(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}

(3) 메인 클래스에서 빈 사용

import org.springframework.boot.CommandLineRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class MainApp implements CommandLineRunner {

    private final MessageService messageService;

    public MainApp(MessageService messageService) {
        this.messageService = messageService;
    }

    @Override
    public void run(String... args) {
        System.out.println(messageService.getMessage());
    }
}

3. Java Config 활용 예제

예제 1: 데이터베이스 설정

Java Config로 데이터 소스를 설정할 수 있습니다.

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import javax.sql.DataSource;

@Configuration
public class DataSourceConfig {
    
    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        return dataSource;
    }
}

예제 2: RestTemplate 설정

외부 API 호출을 위한 RestTemplate 빈 설정입니다.

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

예제 3: 스케줄러 설정

스케줄링 작업을 Java Config로 정의할 수 있습니다.

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

@Configuration
@EnableScheduling
public class SchedulerConfig {

    @Scheduled(fixedRate = 5000)
    public void printMessage() {
        System.out.println("스케줄러가 5초마다 실행됩니다.");
    }
}

4. Java Config와 기존 XML 설정 비교

기능 XML 설정 Java Config

가독성낮음높음
코드 완성 지원불가능가능
테스트 용이성어려움쉬움
변경 사항 반영XML 파일 편집 필요코드 수정 후 즉시 반영

5. 실무에서 Java Config를 활용하는 팁

  • 구성 분리: 하나의 설정 클래스에 모든 설정을 넣지 말고, 기능별로 나누어 관리합니다. 예: 데이터베이스 설정, 웹 설정 등.
  • @Conditional 활용: 특정 조건에서만 빈을 생성하도록 조건부 설정을 활용합니다.
  • 테스트 코드 작성: Java Config로 작성한 설정 클래스는 테스트 코드로 검증할 수 있습니다.

결론

스프링 부트 3에서 Java Config는 필수적인 설정 방식으로 자리 잡고 있습니다. 위에서 설명한 예제와 팁을 기반으로 Java Config를 적극 활용해 코드의 가독성과 유지보수성을 높이세요. 이를 통해 더욱 생산적이고 효율적인 스프링 애플리케이션을 개발할 수 있습니다.

반응형