@Autowired는 스프링 프레임워크에서 의존성 주입(Dependency Injection)을 위해 사용되는 핵심 어노테이션입니다.
@Component
public class UserService {
@Autowired
private UserRepository userRepository;
}
@Component
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
@Component
public class UserService {
private UserRepository userRepository;
@Autowired
public void setUserRepository(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
required = false 옵션을 통해 주입할 빈이 없어도 예외가 발생하지 않도록 할 수 있습니다.@Autowired(required = false)
private OptionalDependency dependency;@Autowired
private List<SomeInterface> implementations;@Autowired를 생략할 수 있습니다.@Autowired는 스프링의 강력한 의존성 주입 기능을 제공하지만, 적절히 사용하지 않으면 애플리케이션의 구조와 테스트 용이성에 영향을 줄 수 있습니다. 상황에 맞는 주입 방식을 선택하고, 클래스의 책임을 명확히 하는 것이 중요합니다.
@Component
@Configuration
@Bean
@RequiredArgsConstructor
@Service
@Repository