반응형
빈 (Bean) 이란?
스프링 IoC 컨테이너가 관리하는 자바 객체를 의미한다.
자바 객체
일반적인 자바 객체는 아래와 같이 클래스를 선언하여 사용한다.
public class Car {
private final String name;
public Car(String name) {
this.name = name;
}
public void turnLeft() {...}
}
public class MainApplication {
public static void main(String[] args) {
Car car = new Car("KIA K3"); // 객체 선언
car.turnLeft(); // 메소드 호출
}
}
위와 같은 일반 Car
자바 객체를 빈으로 등록하기 위해서는 어떻게 해야 할까?
빈으로 등록하기
일반 자바 객체를 스프링 빈으로 등록하기 위해서는 3가지 방법이 존재한다.
- 자바 (Java) 기반
- XML 기반
- 어노테이션 (Annotation) 기반
자바 (Java) 기반으로 빈 등록하기
자바 기반 빈 등록 방식에서는 Configuration 클래스에 @Bean 어노테이션을 활용하여 빈을 정의할 수 있다.
@Configuration // Configuration 어노테이션을 통해 설정 클래스로 등록
public class AppConfig {
@Bean // Bean 어노테이션을 통해 "UserRepository" 를 빈으로 등록
UserRepository userRepository() {
return new UserRepositoryImpl();
}
}
XML 기반으로 빈 등록하기
XML 파일에 빈을 정의하는 방법도 있다.
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="userRepository" class="com.example.demo.UserRepositoryImpl" />
</beans>
어노테이션 (Annotation) 기반으로 빈 등록하기
빈으로 등록할 수 있는 어노테이션을 각 클래스에 부여하는 방식으로 빈을 정의한다.
@Component
, @Repository
, @Service
등이 있다.
가장 흔하게 사용하는 방법 중 하나
@Component
public class UserRepositoryImpl implements UserRepository {
...
}
반응형
'스프링' 카테고리의 다른 글
[스프링] JPA 관련 통합 테스트 환경 구축하기 (0) | 2023.02.06 |
---|---|
[스프링] JUnit5, AssertJ, Mockito 기반 테스트 환경 구축하기 (0) | 2023.02.06 |
[스프링] 프로그래밍 방식의 트랜잭션 관리 방법 (0) | 2023.02.03 |
[스프링] 스프링의 역사 (0) | 2023.02.02 |
[스프링] 트랜잭션과 스프링의 @Transactional (0) | 2023.02.02 |
댓글