일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 인프런
- greedy
- String
- php
- 따라하면서 배우는 C언어
- programmers
- 종만북
- BASIC
- BOJ
- C언어
- server
- web
- Math
- dfs
- graph
- Algospot
- sorting
- 따라하며 배우는 C언어
- udemy
- JavaScript
- 생활코딩
- 따배씨
- 정수론
- Python
- C
- 백준
- DP
- Algorithm
- Cleancode
- BFS
- Today
- Total
몽상실현개발주의
Spring Boot에서 의존성 주입: @Bean과 @Autowired의 이해 본문
Spring Boot는 Java 개발자들에게 강력한 프레임워크를 제공하여, 비즈니스 애플리케이션을 빠르고 효율적으로 개발할 수 있게 돕습니다. 특히, 의존성 주입(Dependency Injection, DI)은 Spring Boot의 핵심 기능 중 하나로, 애플리케이션의 결합도를 낮추고, 코드의 재사용성을 높이며, 테스팅을 용이하게 합니다. 이 글에서는 Spring Boot에서 사용되는 두 가지 주요 의존성 주입 방식인 @Bean과 @Autowired에 대해 자세히 알아보겠습니다.
# @Bean 과 @Configuration 의 사용
@Bean 어노테이션은 메소드에 사용되어, 해당 메소드가 Bean 객체를 생성하고 반환하는 것을 나타냅니다.
이 메소드들은 주로 @Configuration 이 붙은 클래스 내에 위치하며, 이 클래스들은 Spring 컨테이너가 구동될 때 빈으로 등록되는 설정 파일의 역할을 합니다.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean
public MessageService messageService() {
return new MessageService();
}
@Bean
public UserService userService(MessageService messageService) {
return new UserService(messageService);
// 의존성 주입
}
}
위의 코드에서, AppConfig는 설정 클래스로서, MessageService와 UserService 객체를 Bean으로 생성하고 의존성을 주입합니다. 이 방식은 개발자가 의존성의 생성과 주입을 명확히 제어할 수 있게 해줍니다.
# @Component 와 @Autowired 의 역할
@Component 는 클래스 레벨에서 사용되어, 해당 클래스를 자동으로 스캔하여 Spring 컨테이너에 Bean으로 등록하도록 합니다. @Autowired 는 이러한 Bean들 사이의 의존성을 자동으로 주입하는 데 사용됩니다. 필드, 생성자, 또는 세터 메소드에 이 어노테이션을 사용할 수 있습니다.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private MessageService messageService;
// 의존성 주입
public String getUserMessage() {
return messageService.getMessage();
}
}
이 경우, UserService는 @Service 어노테이션을 통해 자동으로 Bean으로 등록되고, MessageService는 @Autowired 를 통해 해당 서비스에 자동으로 주입됩니다. 이 방법은 코드를 간결하게 유지하고, 개발자가 직접적으로 의존성을 관리하지 않아도 되는 이점을 제공합니다.
결론
@Bean 과 @Configuration 을 사용하는 방식은 개발자가 의존성을 더욱 세밀하게 관리할 수 있게 해주는 반면, @Component와 @Autowired 는 더 간결하고 자동화된 방식으로 의존성 주입을 처리합니다. 프로젝트의 요구 사항과 팀의 선호에 따라 적절한 방법을 선택할 수 있습니다.
'Dev' 카테고리의 다른 글
Java 컬렉션 프레임워크 인터페이스와 상속 관계 (0) | 2024.06.18 |
---|---|
리플렉션과 Private : Java의 강력한 도구와 그 위험성 (0) | 2024.05.15 |
빌더 패턴의 이해와 Java에서의 적용 (0) | 2024.05.06 |
Lombok in Spring Framework (0) | 2024.05.06 |
SpringBoot VO 와 DTO (0) | 2024.05.05 |