AnnotationConfigApplicationContext 에 저장한것은 appcontext.class를 전달한다
appcontext 안에 있는 코드가 동작이 된다
ctx 객체 안에 greter 객체가 생성이 된다.
ctx 객체 안에 greter 객체가 생성이 된다.
리턴해주는 객체 타입 Greeter
gretter 이라는 객체의 타입을 가지고 있다.
"greeter" => greeter 라고 하는 객체
ctx.getBean("greeter", Greeter.class);
Greeter 라는 데이터타입에 gretter 라는 객체를 꺼내서 리턴을 해준다 (gretter에 저장한다)
==============
ctx 안에 greeter이 들어가 있는데
https://mvnrepository.com/search?q=spring+context
Maven Repository: spring context
Spring Context Support Last Release on Jun 15, 2022
mvnrepository.com
스프링의 핵심은 객체를 생성하고 초기화 하는것이다
ApplicationContext 여기 안에 객체를 생성하고 객체를 우리가 원하는 상태로 초기화 한다
AnnotationConfigApplicationContext 여기에 ApplicationContext을 구현한 클래스이다
AnnotationConfigApplicationContext AppContext.class 정보를 읽어와서
정보를 가져와서 우리가 원하는 상태로 초기화한다
Annotation 방식으로 가져온다
xml 방식도 있고 groovy 방식도 있다 (방법은 총 3가지 있다 )
Annotation이니깐
< BeanFactory 인터페이스는 객체 생성과 검색에 대한 메서드(기능)을 정의
getBean 메서드가 이 인터페이스에 정의되어있음
객체 생성과 검색 외에도 싱글톤 빈인지 프로토타입 빈인지 확인하는 기능도 제공 >
객체를 생성하고 검색하는 인터페이스 ( beanfacory) 맨위에
getBean 할수 있었던 이유가 beanfacory 덕분에
applicationConetext 메세지나 환경 변수 인터페이스 중간
(뭐뭐무머) ~~ApplicationContext 실제로 구현해서 객체를 생성하고 원하는 상태로 초기화 꺼내고
관리하고 실질적인 클래스 맨 밑에
스프링의 핵심은 객체(빈)를 생성하고 초기화 하는 기능
~~ApplicationContext 를 통해서 사용을 할 수가 있다 ( 참고사항을 알면 이해하기 쉬워진다)
꺼내고 싶으면 getBean
자바에서는 EJB 여기에서 빈이라는 말이 나왔다 객체를 빈이라고 한다
초록색 박스
~~ApplicationContext ==> 컨테이너 라고 얘기하기도 한다
예로 ctx 라는 컨테이너
ctx를 컨테이너를 가져옴 그리털 객체를 가지고 있다 객체의 타입이 그리털
컨테이너에 가지고 있는 빈은 그리털은 싱글톤 객체이다.
싱글톤 : 단일의 객체 < 직접 찾아보기 >
단일 객체 new 로 객체를 생성해도 같은거다
ㄴ greeter 이라는 메서드가 하나만 있은 경우이다
빈은 싱글톤 객체이다 !!!!!!!
싱글톤 찾아봐야한다!!!!!!!!!!!!!!!!!!!!
직접 공부해보기
< 싱글톤 객체란 앞서 JSP 프로젝트에서 봤듯
객체가 필요할 때 new 연산자로 객체를 생성해도 새롭게 만들어지지 않고
미리 만들어둔 하나의 객체를 재사용하는 객체를 말함 > = 단일 객체
기본적으로 스프링은 빈객체를 싱글톤 디자인 패턴을 적용해 만듦
ㅇ두 객체를 가진 컨테이너
컨테이너는 데이터타입이 같은것을 여러개 가질숫 있고 메서드 이름을 따라간다
다음과 같이 빈 애노테이션을 달면 greeter1 빈 객체가 생김
greeter 와 greeter1 객체가 가리키는 객체의 타입은 같지만
서로 다른 공간에 저장된 같은 타입의 객체
============================================
스프링 DI ( Dependency Injection)
-> 의존 주입
a 라는 사람이 b 를 의존한다
의존은 객체간의 의존이라고 한다
a -> b a가 동작하기에는 b가 꼭 있어야한다
스프링은 의존주입을 한다
직접하는걸 덜 하기위해서 의존주입 DI 를 사용한다
생성자 세터 방식으로 의존주입을 하게 되면은
서비스를 만들때 의존주입을 하고 변화의 역할을 한곳으로 몰아서
어떤 변화를 일일이 수정할 필요없이 의존주입을 사용하면 변경할 곳 한곳에만 변경하면
전부 변경이 된다
객체지향 / 디자인패턴 공부해야지 스
================
예시
예시로 먼저 회원등록 서비스를 만들었다
이전에도 서비스에는 dao를 매번 연결해서 dao를 불러서 하는 수고로움이 있어다
그치만 먼저 private 를 이용해서 dao를 위로 뺐다 맴버변수로 선언을 했다
컨트롤 - 서비스
서비스 - DAO 에 의존을 한다
각 필요한것을 넣는것을 의존주입이라고 한다
의존주입 DI로 하는 방법
의존주입 DI
생성자로 의존주입을 하면 변화의 역할을 한곳으로 모여준다
비밀번호를 변경하는 것도 생성함
'코딩 > 스프링' 카테고리의 다른 글
스프링 AOP 수업내용 (1) 용어 정리 / 흐름 (0) | 2022.07.12 |
---|---|
AOP 7월 11일 (0) | 2022.07.11 |
스프링 컨테이너 이용하기 (0) | 2022.07.10 |
스프링 자동의존주입 @Autowired (0) | 2022.07.10 |
스프링 프래임워크란 (0) | 2022.07.09 |