- 생활코딩 DATABASE2 MYSQL [8강~14강]
- 스프링 복습
구글링을 잘하자ㅋ
https://joshbla.tistory.com/130?category=981442
[8주차]220809 - 스프링 프레임워크 소개
오늘의 학습 목표는? Spring Framework이 무엇인지 이해할 수 있다. Spring Framework을 왜 배워야하는지 이해할 수 있다. Spring Framework의 아키텍처를 버드 아이 뷰 관점에서 이해할 수 있다. Spring Framewor..
joshbla.tistory.com
프레임워크 : 개발을 도와주는 도구라이브러리도 개발을 도와준다 차이 = 프레임워크는 흐름을 프레임워크가 주도 / 라이브러리는 개발자가 주도
스프링 사용이유 : POJO기반 구성 , IoC/DI 구성 , MVC 구조 , WAS 에 독립적
POJO : 자바로 생성하는 '순수한' 객체 (다른 것에 종속되지 않는다)
--> 코드가 깔끔해짐, 수정 용이, 객체지향 설계 적용 가능
POJO는 IoC/DI , AOP, PSA를 통해 달성 가능
++ 객체 지향 설계 원칙 SOLID
S : 단일 책임 원칙 (Single responsibility principle)
한 클래스는 하나의 책임만 가져야 한다.
O : 개방-폐쇄 원칙 (Open/closed principle)
소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
L : 리스코프 치환 원칙 (Liskov substiturion principle)
프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
계약에 의한 설계를 참고
I : 인터페이스 분리 원칙 (Interface segregation principle)
특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
D : 의존관계 역전 원칙 (Dependency inversion principle)
추상화에 의존해야지, 구체화에 의존하면 안된다.
의존성 주입은 이 원칙을 따르는 방법 중 하나다.
IoC : 흐름의 주도권 역전
DI : 의존성 주입
- 객체간의 관계를 느슨하게 한다 : 추상화 , 인터페이스 사용, new 생성자 사용제한(스프링에서 처리)
AOP : 관심지향 프로그래밍
- 핵심 관심사항에서 공통 관심사항을 분리
PSA : 일관된 서비스 추상화
- 접근 방식을 일관되게 유지
https://joshbla.tistory.com/132?category=981442
[8주차]220811 - 스프링 핵심개념 [ DI ] (1)
joshbla.tistory.com
스프링 컨테이너 : 빈의 생명주기 관리, 빈의 정보를 담는다. new를 사용하지 않고 이것을 통해 객체를 사용한다.
- > 객체간의 의존성을 낮춘다. = DI
이것을 관리하기 위해 IOC 사용(DI)
컨테이너는 BeanFactory(Bean객체 관리), ApplicationContext(BeanFactory 상속 + 추가기능)가 있다
new AnnotationConfigApplicationContext(구성정보.class)
를 통해 구성정보.class 에 있는 @Bean의 메서드를 등록한다
싱글톤 : 모르겠음
@Bean = 메서드를 인스턴스화 한 객체 : 메서드레벨에 선언하며 해당 메서드가 반환하는 객체를 Bean으로 등록하는것
@Component = 클래스를 Bean으로 등록
@Configuration = Bean 정보가 들어있는 @Bean 이라고 알려주는것 (@Component기능이 포함되어있다)
해당 클래스를 빈으로 등록하고 해당 클래스 내의 모든 Bean도 등록한다.
@ComponentScan = 하위 Bean 탐색 @component가 붙은 모든 클래스르 빈으로 등록 ( 설정정보에 붙여주면 된다.)
<Springboot에서 제공>
@Autowired = 생성자 주입 : 이것을 생성자메서드에 달면 스프링 컨테이너에 @Component로 등록된 빈에서 생성자에 필요한 빈들을 주입한다.
자바빈과 스프링 빈은 다르다
자바 빈은 단순하게 클래스에서 게터세터 명령어만 가지고 있는 클래스를 의미한다.
Bean은 스프링컨테이너에서 꺼내와서 BeanDefinition 이라는 추상화를 통해 SpringBean이 된다.
@Bean으로 등록한 객체는 new AnnotationConfigApplicationContext(메서드이름, 구성정보.class) 로 등록하는데
@Component로 등록한 객체는 new AnnotationConfigApplicationContext(구성정보.class) 로 등록한다.
'공부 일지 > 개인 공부 기록용' 카테고리의 다른 글
2022/08/23 스프링 mapper constructor 오류 (1) | 2022.08.23 |
---|---|
2022/08/19 (0) | 2022.08.19 |
2022/08/08 SQL (0) | 2022.08.09 |
2022/08/03 [동기, 비동기, 블로킹, 논블로킹] (1) | 2022.08.03 |
2022/07/28 (0) | 2022.07.28 |