728x90
컴포넌트 스캔으로 스프링 빈 자동 등록
- @Component 가 있으면 스프링 빈이 자동 등록된다.
- @Controller, @Service, @Repository 은 @Component 를 포함하기 때문에 모두 스프링 빈으로 자동 등록된다.
- 해당 패키지를 포함한 하위 패키지까지들만 스프링 빈을 자동 등록한다.
(ex. hello > hellospring > Application.java 라면, hello 와 형제 패키지인 demo 패키지는 등록 X)
- 일반적으로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드에 사용
> 참고 <
- @Autowired 로 생성자를 등록하면 스프링이 의존성 주입하여 연결해 준다.
- 이때, 스프링 빈으로 등록되어 스프링이 관리하는 객체에서만 동작한다.
- 스프링 빈은 싱글톤으로 하나만 등록하여 공유해서 사용한다.
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
@Service
public class MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
}
자바 코드로 직접 스프링 빈 등록하기
- @Service, @Repository 없이 직접 스프링 빈을 등록한다.
- 상황에 따라 구현 클래스를 변경해야 할 때 사용
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
출처 | 스프링 입문(김영한) - 인프런
728x90
'💠프로그래밍 언어 > Java' 카테고리의 다른 글
[Spring] View 를 처리하는 방법들 (Static, Template, API) (1) | 2024.12.20 |
---|---|
[Spring] 스프링 프로젝트 생성, 라이브러리, 빌드하기 (0) | 2024.12.20 |
[기본 개념] 9 | (2.2) 스트림 중간 연산 (0) | 2022.02.10 |
[기본 개념] 9 | (2.1) 스트림 (0) | 2022.01.26 |
[기본 개념] 9 | (1.2) Java.util.funcion 패키지, Function 합성, Predicate 결합, 메서드 참조 (0) | 2022.01.26 |