🔗 출처 : https://dev-coco.tistory.com/80
🔗 강의 출처 :https://www.inflearn.com/course/스프링부트-개념정리
Framework : 틀안에서 동작하다.
구슬은 틀안에서 움직임과 같은 것이다. 틀 안에서 벗어나지 말라는 뜻으로 틀을 제공해줄 테니 이 틀에 맞춰서 개발을 해라 그렇게 하면 좋은 프로그램을 만들 수 있다.
class는 설계도이며, object는 실체화가 가능한 것이며(롤 캐릭터 중 누누는 class이나 캐릭터는 추상적인 의미의 추상 클래스), instance는 실체화 된 것이다.
object를 의자 s = new 의자();로 heap에 올리면 이 s는 만든 메서드가 관리함 단점은 이렇게 되면 나중에 공유할 때 힘들어진다.
객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미
컴포넌트 의존관계 설정(Component dependency resoulution), 설정(Configuration) 및 생명주기(LifeCycle)을 해결하기 위한 디자인 패턴(Design Pattern)
이다.
컨테이너?란 컨테이너는 보통 객체의 생명주기를 관리, 생성된 인스턴스들에게 추가적인 기능을 제공하도록 하는 것
스프링 프레임워크도 객체를 생성하고 관리하고 책임지고 의존성을 관리해주는 컨테이너가 있는데,그것이 바로 IoC 컨테이너(=스프링 컨테이너)
인스턴스 생성부터 소멸까지의 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해주기 때문에 객체 관리 주체가 프레임워크(Container)가 되기 때문에 개발자는 로직에 집중할 수 있다는 장점이 있다.
POJO
의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다.POJO(Plain Old Java Object)란?
주로 특정 자바 모델이나 기능, 프레임워크를 따르지 않는Java Object
를 지칭한다.
Java Bean 객체가 대표적이다.
간단하게 getter / setter를 생각하면 될 것 같다.
DL
: 저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lockup하는 것DI
: 각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것스프링 빈을 등록하는 두 가지 방법(@Component, @Bean)
의존성 주입 3가지 방법 - (생성자 주입, Field 주입, Setter 주입)
빈 팩토리(BeanFactory)
라고 부른다.BeanFactory
라고 한다.어플리케이션컨텍스트(ApplicationContext)
가 있다.1. BeanFactory
팩토리 디자인 패턴
을 구현한 것으로 BeanFactory는 빈을 생성하고 분배하는 책임을 지는 클래스이다.getBean()
메소드가 정의되어 있다.2. ApplicationContext
따라서 대부분의 어플리케이션에서는 빈팩토리 보다는 어플리케이션콘텍스트를 사용하는 것이 더 좋다.
문지기와 같음.. 임무를 준다. 예를 들어 권한이 없다면 못들어 오게 막는 것과 같은 것을 말한다.
A나라의 성을 tomcat
이라고 보고 왕의 집을 스프링 컨테이너
라고 생각하면 됨
톰켓 쪽으로 들어오는 필터는 실제 filter
라고 불리며, web.xml을 가진다. 두 번째로 스프링 컨테이너로 들어가는 필터는 Interceptor
(AOP)로 권한체크를 해줌
https://velog.io/@prettylee620/Reflection
@Override
@Compont
: 클래스 메모리에 로딩, 즉 IoC가 스캔 읽어서 heap에 자동으로 올려줌@Autowired
: 로딩된 객체 해당 변수에 집어 넣기, 동일한 타입의 객체가 있는지 확인 후 있다면
타입(A)을 통해 찾음 있다면 연결 즉, DI 해주게 된다. 없다면 null
이 들어감class B{
A a = new A();
}
라면, 새로 객체를 만들어서 또 다른 A 객체가 다른 공간에 생성되게 됨class B{
@Autowired
A a
}
라면, B 클래스 스캔 시 분석하는 기법으로 런타임 시 분석하며, 이를 리플렉션
이라고 하는데 분석 시 메서드, 필드, 어노테이션이 어떤 것이 있는지와 무엇인가 해라고 설정할 수 있다.