Java Configuration 기본 세팅 구축하는 방법
Java 기반 설정을 통해 스프링 애플리케이션을 설정하는 방법을 소개합니다.
이 방법은 기존 XML 설정을 Java 클래스를 사용해 대체하는 방식으로, 코드의 가독성과 유지보수성을 높일 수 있습니다. 아래에서는 Java 설정 파일을 사용한 의존성 주입 방법과 이를 테스트하는 구성을 설명합니다.
※java configuration 기본세팅 구축하는 법 1탄 https://ohj9575.tistory.com/170
java 개발환경 구축 (※Java Configuration)
java configuration 을 하는 이유 환경 독립성: 개발, 테스트, 운영 환경마다 설정 값이 달라질 수 있습니다. 예를 들어 데이터베이스 URL, API 키, 포트 번호 등은 환경마다 다를 수 있기 때문에, 이를
ohj9575.tistory.com
※의존성 이란? https://ohj9575.tistory.com/172
스프링(Spring) 프레임워크의 특징과 의존성 주입(DI)
1. 프레임워크가 나온 이유프레임워크는 개발자마다 능력 차이가 존재하는 상황에서, 이러한 차이를 줄이고 효율적으로 개발할 수 있도록 돕기 위해 등장했습니다.2. 스프링과 다른 프레임워크
ohj9575.tistory.com
1. Java 설정 파일로 의존성 주입하는 법
스프링 애플리케이션 설정 시, XML 설정 파일인 root-context.xml 대신 Java 설정 파일을 이용할 수 있습니다.
RootConfig 클래스는 이러한 설정을 담당하는 Java 클래스입니다.
RootConfig.java 설정
package org.zerock.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages = {"org.zerock.sample"}) // 스캔할 패키지 지정
public class RootConfig {
// 필요한 설정이 있으면 여기에 추가
}
위 코드는 @Configuration과 @ComponentScan 애노테이션을 사용하여 Java 기반으로 스프링 컨텍스트를 설정합니다. @ComponentScan은 지정된 패키지에서 스프링이 관리할 빈을 자동으로 스캔하고 등록하는 역할을 합니다.
- @Configuration: 해당 클래스가 스프링 설정 파일임을 나타냅니다.
- @ComponentScan: 특정 패키지를 스캔하여 스프링 컨테이너에 빈으로 등록할( @Component, @Service, @Repository, @Controller 등이 붙은) 클래스를 자동으로 탐색합니다.
2. Java 설정 파일을 이용한 테스트 구성
스프링의 **SpringJUnit4ClassRunner**를 이용하여 테스트할 수 있습니다.
여기서 Java 설정 파일을 기반으로 스프링 컨텍스트를 설정하고, 의존성을 주입받는지 확인할 수 있습니다.
SampleTest 클래스 예시:
package org.zerock.sample;
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.zerock.config.RootConfig;
import lombok.Setter;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class) // 스프링과 JUnit 통합 실행
@ContextConfiguration(classes = {RootConfig.class}) // RootConfig 기반으로 스프링 컨텍스트 설정
@Log4j
public class SampleTest {
@Setter(onMethod_ = { @Autowired })
private Restaurant restaurant; // Restaurant 빈 자동 주입
@Test
public void testExist() {
assertNotNull(restaurant); // restaurant 객체가 null이 아님을 확인
log.info(restaurant); // restaurant 정보 로그 출력
log.info("----------------------------------");
log.info(restaurant.getChef()); // restaurant에 포함된 chef 정보 출력
}
}
- @RunWith(SpringJUnit4ClassRunner.class): 스프링의 JUnit 통합 기능을 사용하여 테스트 클래스가 스프링 컨텍스트에서 실행되도록 합니다.
- @ContextConfiguration(classes = {RootConfig.class}): RootConfig 클래스를 기반으로 스프링 컨텍스트를 설정합니다.
- @Autowired: 스프링 컨텍스트에서 Restaurant 객체를 자동으로 주입받습니다.
- @Log4j: 로그를 기록하는 데 사용됩니다.
테스트 메서드 **testExist()**에서는 Restaurant 빈이 정상적으로 주입되었는지 확인하고, 주입된 객체와 그 내부에 있는 Chef 객체에 대한 정보를 로그로 출력합니다.
요약
- RootConfig 클래스: Java 기반으로 의존성 주입을 설정하는 클래스입니다. @ComponentScan을 사용하여 특정 패키지 내의 빈을 자동으로 등록할 수 있습니다.
- SampleTest 클래스: 스프링의 SpringJUnit4ClassRunner와 Java 설정 파일을 이용해 테스트 환경을 구성하고, 의존성 주입이 잘 이루어졌는지 확인합니다.
Java 설정을 통해 XML 설정을 대체하면 코드의 가독성과 유지보수성이 향상되며, 테스트와 설정도 더욱 간결하게 관리할 수 있다.
'Spring(스프링)' 카테고리의 다른 글
스프링(Spring) 프레임워크의 특징과 의존성 주입(DI) (0) | 2024.10.22 |
---|---|
java 개발환경 구축 (※Java Configuration) (1) | 2024.10.21 |
Java 개발을 위한 준비(※개발환경 기초,세팅) (1) | 2024.10.21 |
[ STS ] 깃허브(github) 연동 , 프로젝트 import 하기 (2) | 2024.10.20 |