본문 바로가기
공부 일지/개인 공부 기록용

2022/08/15

by Joshbla 2022. 8. 16.
  • 생활코딩 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