티스토리 뷰
1.계획
자바 클래스 복습
김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 절반 학습
2.배운점
Compoment 어노테이션을 통한 스프링 컨테이너 등록방법
@Controller
@Service
@Repository
위 어노테이션들은 Component를 사용해 스프링 컨테이너에 올린다.
@Component
controller - service - repository의 의존관계가 있을때 의존방법
@Autowired로 생성자를 선언하면 컨테이너에 등록된 클래스가 주입된다. (DI)
// Component로 올려줌
// 어노테이션 생성시 컨테이너에 올라감
@Controller
public class MemberController {
private final MemberService memberService;
// 가져다 쓸 클레스를 선언후 생성자를 써주면 컨테이너에 등록이 되면서 이 생성자를 호출해서
// 동일하게 가져다쓸 클레스에도 컨테이너에 올려주는 작업이 필요함.
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
자바 코드로 스프링 Bean 등록방법
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.service.MemberService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService(){
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository(){
return new MemoryMemberRepository();
}
}
DI(Dependency Injection)
DI에는 필드 주입, setter주입, 생성자 주입이 있는데
생성자주입은 제일 권장되는 방식이라고 한다.
싱클톤 방식으로 객체가 주입되서
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
필드주입 -> 필드에 직접 @Autowired를 쓰는방법
그런데 문제가 발생했을때 교체하기에 좋지않다고 한다.
@Autowired private MemberService memberService;
setter주입 -> public하게 노출되어 다른 개발자가 상태값을 변경할 수 있어서 위험하다.
@Controller
public class MemberController {
private MemberService memberService;
@Autowired
public void setMemberService(MemberService memberService) {
this.memberService = memberService;
}
}
3.코멘트
스프링의 일부분?인 IOC, DI를 이해하기위해서는 클래스, 메소드, 생성자를 잘 이해해야 스프링에서 사용되는 DI가 어떻게 생성되서 주입되는지에 대해 이해할 수 있는거같다. 기본 소양을 갖춰야 다음으로 나아갈 수 있는것처럼 계단식 학습법같은 느낌! 좋은 입문 강의를 제공해주셔서 감사합니다. 앞으로 더 정진하자!
'개발 > TIL' 카테고리의 다른 글
| 10.5 Entity (0) | 2022.10.05 |
|---|---|
| 10.4 HTTP, JPA (0) | 2022.10.04 |
| 9.29 알고리즘 (0) | 2022.09.29 |
| 9.28 클래스 (0) | 2022.09.28 |
| 9.27 혼공자 (0) | 2022.09.27 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코드해석
- 환경세팅
- .jks
- EntitiyManagerFactory
- this
- 김영한
- backoffice
- 알고리즘
- 풀텍스트
- ssl
- wil
- java
- python
- instance
- badrequest
- DI
- JPQL
- Spring
- 항해99
- method
- ajax
- querydsl
- JPA
- 협업
- POI
- IOC
- EC2
- joinfetch
- JWT토큰
- DTO
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함