본문 바로가기
Spring Boot/인강

스프링 IoC, IoC 컨테이너, Bean, DI, AOP

by hyhs 2022. 3. 8.
728x90
반응형
SMALL

https://www.inflearn.com/course/spring_revised_edition/dashboard

 

[무료] 예제로 배우는 스프링 입문 (개정판) - 인프런 | 강의

이 강좌는 스프링 프레임워크에 입문하는 분들을 위한 강좌입니다.Spring - PetClinic이라는 스프링 공식 예제 프로젝트의 코드를 보며, 다음의 스프링의 핵심 기능을 쉽고 빠르게 이해할 수 있습니

www.inflearn.com

 

 

스프링 IoC

일반적인 (의존성에 대한) 제어권: "내가 사용할 의존성은 내가 만든다. "

class OwnerController {
private OwnerRepository repository = new OwnerRepository();
}

 

IoC: "내가 사용할 의존성을 누군가 알아서 주겠지"

-내가 사용할 의존성의 타입(또는 인터페이스)만 맞으면 어떤거든 상관없다.

-그래야 내 코드 테스트 하기도 편하지.

 

class OwnerController {
private OwnerRepository repo;
public OwnerController(OwnerRepository repo) {
this.repo = repo;
}
// repo를 사용합니다.
}

 

IoC 컨테이너

빈(bean)을 만들고 엮어주며 제공해준다.

빈 설정

-이름 또는 ID

-타입

-스코프

 

빈(Bean) : 스프링 IoC 컨테이너가 관리하는 객체

등록하는 방법 크게 2가지

1. Component Scanning

-Component

 - @Repository

 - @Service

 - @Controller

 - @Configuration

2. 또는 직접 일일히 XML이나 자바 설정 파일에 등록

 

꺼내쓰는 방법

-@Autowired 또는 @Inject

-또는 ApplicationContext에서 getBean()으로 직접 꺼내거나

 

특징

-오로지 "빈"들만 의존성 주입을 해줌.

 

의존성 주입(Dependency Injection)

필요한 의존성을 어떻게 받아올 것인가?

@Autowired/ @Inject를 어디에 붙일까?

-생성자

-필드

-Setter

 

시간 측정

StopWatch stopWatch = new StopWatch();
stopWatch.start();

stopWatch.stop();
System.out.println(stopWatch.prettyPrint());

 

AOP 구현 방법

-컴파일 A.java ---(AOP)---> A.class

-바이트코드 조작 A.java -> A.class ---> 메모리

-프록시 패턴

 

Proxy 

 

PSA (Portable Service Abstraction)

 

스프링 MVC

Model: model을 담고있는 owner라는 객체

View: createOrUpdateOwnerForm.html

Controller: OwnerController

톰캣, 제티, 네티, 언더토우

https://netty.io/4.0/xref/io/netty/example/http/snoop/HttpSnoopServer.html

 

HttpSnoopServer xref

 

netty.io

 

스프링 트랜잭션

https://mkyong.com/jdbc/jdbc-transaction-example/

JDBC 대신

@Transactional

PlatformTransactionManager (Spring Framework 5.3.16 API)

 

스프링 캐시

 

 

728x90
반응형
LIST

댓글