- 빈 (Bean): Spring이 관리하는 객체
- Spring IoC 컨테이너: *Bean*을 모아둔 컨테이너
@Component 를 클래스 위에 붙여주면 첫 번째 대문자가 소문자로 바뀐 memoService 이름으로 Bean 저장됨
@Autowired
- Spring IoC 컨테이너에 의해 관리되는 클래스에서만 가능합니다.
필드 위에 @Autowired
'Bean'을 주입할 때 사용할 메서드 위에 @Autowired
- 객체의 불변성을 확보할 수 있기 때문에 일반적으로는 생성자를 사용하여 DI하는 것이 좋음
- set… Method를 만들고 @Autowired를 적용하여 DI 할 수도 있음
- 생성자 선언이 1 개라면 생략 가능
ApplicationContext
- ApplicationContext는 BeanFactory등을 상속하여 기능을 확장한 Container
- BeanFactory는 ‘Bean’ 의 생성, 관계설정등의 제어를 담당하는 IoC 객체
@Component
public class MemoService {
private final MemoRepository memoRepository;
public MemoService(ApplicationContext context) {
// 1.'Bean' 이름으로 가져오기
MemoRepository memoRepository = (MemoRepository) context.getBean("memoRepository");
// 2.'Bean' 클래스 형식으로 가져오기
// MemoRepository memoRepository = context.getBean(MemoRepository.class);
this.memoRepository = memoRepository;
}
...
}
3 Layer Annotation
- @Controller, @RestController
- @Service
- @Repository
'컴퓨터 프로그래밍 > Spring' 카테고리의 다른 글
[Spring] 영속성 컨텍스트, 트랜잭션 (0) | 2024.08.20 |
---|---|
[Spring] Spring, Spring MVC, Spring 3 Layer (0) | 2024.08.19 |
[Spring] Ioc (제어의 역전) 와 DI (의존성 주입) (0) | 2024.08.16 |
[Spring] CRUD (0) | 2024.08.13 |
[Spring] PathVariable, RequestParam, ModelAttribute, RequestBody (0) | 2024.08.13 |