Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- 스프링 핵심 기능
- transaction
- 스프링 핵심 원리
- QueryDSL
- 김영한
- http
- springdatajpa
- db
- JDBC
- Spring Boot
- Proxy
- java
- 스프링
- 알고리즘
- 인프런
- 그리디
- kotlin
- Thymeleaf
- pointcut
- 백준
- Greedy
- Servlet
- jpa
- AOP
- Exception
- spring
- 자바
- SpringBoot
- Android
- JPQL
Archives
- Today
- Total
개발자되기 프로젝트
Spring Bean과 의존관계(JAVA로 직접 등록) 본문
@Component, @Autowired을 사용하는 방법 외에도
스프링 빈으로 등록하는 다른 방법은 java로 직접 등록해주는 것이다.
1. SpringConfig class
간단하다! SpringConfig class를 만들고 아래와 같이 @Bean으로 등록해주면 된다.
@Controller는 그대로 두고, @Service, @Repository는 삭제한 상태이다.
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService(){
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository(){
return new MemoryMemberRepository();
}
}
이렇게 되면 스프링이 시작할 때 memberService, memberRepository가 bean으로 등록되고
memberRepository는memberService에 주입이 된다.
테스트는 잘 돌아간다 ㅋㅋㅋㅋ
2. Di 방법
- 필드주입 : 별로 추천하지 않음. 뭔가를 바꿀 수 있는 방법이 없음..
- setter주입 : 생성은 생성대로 되로 이후에 setter실행 시 주입이 됨.
의존성이 변경될 일이 없는데 public으로 열려있어야함.
@Autowired public void setMemberService(MemberService memberService) { this.memberService = memberService; }
- 생성자 주입 : 애플리케이션 조립 시점에 딱 한 번만 실행됨.
- 의존관계가 실행중에 동적으로 변하는 경우는 거의 없으므로, 생성자 주입을 권장
3. 참고
보통 정형화된 controller, repository 같은 코드는 컴포넌트 스캔.
정형화 되지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록.
@Autowired를 통항 DI는 Controller, Service등과 같이 스프링이 관리하는 객체에서만 동작.
Bean으로 등록하지 않고 내가 직접 생성한 객체에서는 동작하지 않는다.
4. GitHub : 210722,SpringConfig, DI
'Spring Boot' 카테고리의 다른 글
H2 Database 설치 및 사용 법 (0) | 2021.07.23 |
---|---|
홈 화면 추가 & 웹 기능 (0) | 2021.07.22 |
Spring Bean과 의존관계(@Component 스캔) (0) | 2021.07.22 |
회원 서비스 개발 & Test (0) | 2021.07.22 |
회원 도메인, Repository 만들기 (0) | 2021.07.22 |
Comments