DI (Dependency Injection) : 의존성 주입. 객체 의존관계를 외부에서 넣어주는 것.
@Autowired : 생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어준다.
스프링 빈을 등록하는 방법
1. 컴포넌트 스캔과 자동 의존관계 설정
@Component : @Component 애노테이션이 있으면 스프링 빈으로 자동등록된다.
@Controller, @Service, @Repository : @Component가 애노테이션 안에 포함되어 있기 때문에 스프링 빈으로 자동등록된다.
스프링 컨테이너에 스프링 빈을 등록할 때 기본적으로 싱글톤으로 등록한다.
-> 같은 스프링 빈이면 모두 같은 인스턴스
* 싱글톤 : 유일하게 하나만 등록해서 공유
2. 자바 코드로 스프링 빈 등록하기
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
@Configuration을 넣고 생성자에 @Bean을 붙여준다.
* 컴포넌트 스캔 방식이 사용하기 편하지만,
정형화되지 않거나 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록한다.
'JAVA' 카테고리의 다른 글
[Spring] @SpringBootTest, @Transactional (0) | 2023.10.25 |
---|---|
[Spring] jdbc.datasource.DataSourceUtils가 import 되지 않는 오류 (0) | 2023.10.25 |
[Spring] @AfterEach, @BeforeEach (0) | 2023.10.24 |
[Spring] 스프링 웹 개발 기초 (MVC, @ResponseBody) (0) | 2023.10.24 |
[JAVA] 소수 판별법 (0) | 2023.09.19 |