일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- db
- 동시성 문제
- MVCC
- MySQL
- reflection
- 데이터 타입
- Locking Read
- iterator
- 자바
- java
- 가비지 컬렉터
- 백엔드
- gc
- Lock
- text
- 동시성
- jpa
- 스프링
- CAS
- Synchronized
- Di
- foreach
- Varchar
- iterable
- 가비지 컬렉션
- Atomic Type
Archives
- Today
- Total
과정을 즐기자
스프링 빈과 의존관계 본문
1. 컴포넌트 스캔과 자동 의존관계 설정
2. 자바 코드로 직접 스프링 빈 등록하기
- 컴포넌트 스캔과 자동 의존관계 설정
MemberController가 MemberService와 MemberRepository를 사용할 수 있게 의존관계 준비
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에 찾아서 넣어준다. 이렇게 객체 의존관계를 외부에서 넣어주는 것을 DI(Dependency Injection), 의존성 주입이라 한다.
@Service
public class MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
}
@Repository
public class MemoryMemberRepository implements MemberRepository {}
다음과 같이 memberService와 memberRepository가 스프링 컨테이너에 스프링 빈으로 등록되었다.
- 자바 코드로 직접 스프링 빈 등록하기
MemberService와 MemberRepository의 @Service, @Repository, @Autowired 애노테이션을 제거하고 진행
@Configuration
public class SpringConfig {
@Bean
MemberService memberService(){
return new MemberService(memberRepository());
}
@Bean
MemberRepository memberRepository(){
return new MemoryMemberRepository();
}
}
MemberController의 생성자는 @Autowired를 사용한다. SpringConfig 클래스를 생성하고 @Configuration을 사용한다.
스프링 컨테이너에 memberService, memberRepository를 @Bean을 사용해 스프링 빈으로 등록한다.
'Spring' 카테고리의 다른 글
MVC 프레임워크 구현하기 - 2 (0) | 2022.10.29 |
---|---|
MVC 프레임워크 구현하기 - 1 (0) | 2022.10.29 |
싱글톤 컨테이너 (모각소 4주차) (0) | 2022.07.24 |
웹 MVC (0) | 2022.07.18 |
스프링 웹 개발 기초 (0) | 2022.07.14 |