Til 스프링부트 정리
2022-08-13인프런 스프링부트 기본편 강의를 완강.. 정리를 해봤다.
객체 지향 설계
캡슐화, 상속, 추상화, 다형성
역할
과구현
으로 세상을 구분- 역할을 먼저 설계하고 그 역할을 수행하는 구현 객체를 만든다.
- 구현이 바뀌어도 역할은 바뀌지 않아야 한다.
SOLID
- srp 단일책임원칙
- 한 클래스는 하나의 책임만 가져야한다.
- 변경에 대한 파급효과가 적도록 하기위해서.
- ocp 개방 폐쇄 원칙
- 확장에는 열려있으나 변경에는 닫혀있어야한다.
- 운전자라는 역할 - 운전자 1,2,3,4,5…. (확장)
- 클라이언트 객체를 변경하지않고 구현을 바꾸려면 별도의 조립자가 필요하다. → DI
- LSP 리스코프 치환
- 하위타입 인터페이스로 바꿀수있어야한다.
- ISP 인터페이스 분리
- 특정 기능을 하는 인터페이스 여러개가 범용 인터페이스 하나보다 좋다.
- 인터페이스가 명확해지고 대체가능성이 높아진다.
- DIP 의존관계 역전
- 추상에 의존해야지 구체에 의존하면안된다.
- 객체지향의 핵심은 다형성.
- 하지만 다형성만으로는 쉽게 부품을 갈아끼우듯 개발할수없다.
- OCP, DIP를 지킬수없다. 외부에서 객체를 관리하고 조립해주는 무언가가 필요하다.
- →스프링컨테이너
- ocp 개방 폐쇄 원칙
스프링 핵심 기능
스프링 컨테이너, 빈
new AnnotationApplicationContext(AppConfig.class)
Config.java
→@Bean
들을 등록
싱글톤
- 스프링컨테이너는 빈들을 기본적으로 싱글톤으로 관리한다.(
@Scope(”singleton”)
) - 싱글톤.. 여러 클라이언트가 하나의 객체를 공유하기때문에.. 동시성이슈가 생길수있다.
- 따라서 상태를 가지지 않도록 설계해야한다 → 가급적 읽기만 해야한다.
@Configuration
애너테이션을 붙여서 Config를 만들면 등록된 빈들의 싱글톤을 보장한다..- 없으면 만들고 있으면 있는거 주고
@Bean
만 써도 스프링빈으로 등록되지만 싱글톤을 보장하지는 않는다. 설정정보는 항상@Configuration
을 사용하자- 프로젝트 최상단에 설정정보를 놓고 스캔위치 신경안쓰고 쓰는걸 권장
컴포넌트 스캔
- 설정정보에
@ComponentScan
을 사용하면@Component
가 붙은 빈들을 자동으로 등록해준다.
의존관계 자동주입
@Autowired
- 생성자 주입
- 세터주입
- 필드주입
- 롬복의
@RequireArgsConstructor
를 이용해서 생성자를 한개만 만들고@Autowired
를 생략하는 생성자 주입 방법을 주로 사용하게된다. @Primary
주입할수있는 빈이 여러개 매칭되었을때.. 우선권을 주고싶은 컴포넌트에 사용한다.- Map, List로 매칭된 모든 빈을 받아와서 상황에 맞는 빈을 사용할수도있다.
- 편리한 자동기능을 기본으로 사용하자.
빈 생명주기 콜백
@PreDestroy
@PostConstruct
빈 스코프 @Scope
- singleton
- prototype
- request
커리추천
스프링입문
스프링 핵심 기본편
스프링부트 + JPA 실무완전정복 - 야생형코스
활용1 - JPA기본 - 활용1 복습 - 활용2 - 데이터JPA - QueryDSL