티스토리 뷰
0. 제어역전(IoC, Inversion of Control)
:: 객체의 생성과 의존성 관리를 개발자가 아닌 spring container와 같은 외부 시스템이 하는 디자인 패턴
- IoC 구현 5가지 방법
- Template Pattern :: 추상 클래스 부분 구현
- Delegate :: 위임 (실행 결과를 받는것까지 모두 위임, 자기 자신을 보낸다)
- Event :: 이벤트 발행 (Publisher & Subscriber)
- Service Locator/Lookup :: Service Locator 에서 직접 가져와쓰기 개발자가 직접 Bean 주입하는것
- DI(Dependancy Injection) 의존성 주입 :: (IoC) Container 가 대신 Bean 수집, 관리, 주입해주는것
1. ApplicationContext (Spring Container)
:: IoC 컨테이너
:: Spring Bean 생성, 관리 및 의존성 주입을 담당
:: Spring의 AOP 기능을 통해 트랜잭션과 보안 등의 처리를 관리
- 종류
1. ClassPathXmlApplicationContext :: XML 설정을 통해 ApplicationContext 생성
2. AnnotationConfigApplicationContext :: 자바 클래스를 통해 빈을 설정 -> 해당 파일을 사용하는 컨텍스트
3. GenericWebApplicationContext :: 웹 애플리케이션에서 사용되는 컨텍스트
2. Spring Bean
:: Spring IoC 컨테이너(ApplicationContext)에 의해 관리되는 객체
-> Bean == 객체
:: 개발자가 직접 객체 생성 X -> Spring이 대신 객체를 생성 및 주입하는 단위
:: Spring에서 관리하는 Bean은 Singleton으로 관리
1. 왜 싱글톤을 사용할까?
- 대규모 엔터프라이즈 서버 환경은 서버 하나당 최대로 초당 수십, 수백 번씩 브라우저나 여러 시스템으로부터 요청을 받아 처리할 수 있는 높은 성능이 요구되는 환경
- Spring MVC 구조에 따라 하나의 요청에 대한 응답을 만들기까지, 데이터 액세스 로직, 서비스 로직 등의 다양한 기능을 담당하는 객체들이 모두 참여하는 계층형 구조
=> 요청이 올 때마다 각 로직을 담당하는 객체를 새로 만들어서 사용한다면 서버에 엄청난 부하
=> 때문에 싱글톤을 통해 객체 생성 및 관리
2. 왜 자바가 아닌 Spring의 싱글톤으로 관리될까?
- Java 의 싱글턴 사용의 문제
- Private 생성자로 인해 (1) 생성자 호출 불가로 인한 상속 불가 (2) 불편한 테스트
- 클래스 로더에 싱글톤 여부 의존 (예를 들어, 1 어플리케이션 : N 클래스 로더 시 싱글턴 불가능)
- 이러한 이유로 Spring 자체 싱글톤 레지스트리를 통해 객체 생성 및 관리
- IoC방식 중 DI
2.1 Bean 등록
:: Spring Container 내 싱글톤 객체로 이미 등록되어 있음 -> ApplicationContext가 이미 만듦
- @ComponentScan + @Component 를 통한 등록 (Package 지정 가능)
- @Controller, @Service, @Repository 등을 통한 등록
- @Configuration + @Bean
2025.02.19 - [정리용/SpringBoot] - [Spring] 3. SpringContext - Bean 등록
[Spring] 3. SpringContext - Bean 등록
0. Bean 등록0.1 자동 등록 방식:: Spring Container 내 싱글톤 객체로 이미 등록되어 있음(ApplicationContext가 이미 만듦):: @ComponentScan 을 이용하여 애너테이션이 붙은 클래스를 자동으로 스캔 및 등록 1. @
hee-ya07.tistory.com
2.2 Bean 사용
:: Spring Container 내 등록되어 있는 싱글톤 객체를 가져와 주입 및 사용
- Servlet WebApplicationContext : @Controller 등
- Root WebApplicationContext : @Service, @Repository 등
- 종류
- 구체 클래스를 지정하여 Bean 객체 사용 ← 구체 클래스로 Bean 등록
- 부모 클래스를 지정하여 Bean 객체 사용 ← 부모 클래스의 자식 클래스로 Bean 등록
- 인터페이스를 지정하여 Bean 객체 사용 ← 인터페이스의 구체 클래스로 Bean 등록
- 다수 자식 클래스 혹은 다수 인터페이스의 구체 클래스를 Collection 자료구조로 Bean 사용
2.3 Bean 주입 - DI
2025.02.19 - [정리용/SpringBoot] - [Spring] 3. SpringContext - Bean 주입
[Spring] 3. SpringContext - Bean 주입
0. Bean 간의 관계 설정:: 두 Bean 간의 관계를 설정하여 다른 객체 책임을 위임 가능:: has-A 관계. Bean 간의 관계 설정:: 두 Bean 간의 관계를 설정하여 다른 객체 책임을 위임 가능 :: has-A 관계(포함 관
hee-ya07.tistory.com
참고
ASAC 7기 수업자료
스프링 교과서 - 예스24
스프링 기초 이론부터 스프링 부트, 웹 애플리케이션 구현, 보안 강화, 리팩터링, 테스트까지개발 전반의 내용을 책 한 권에 모두 담았다!이 책의 최종 목표는 스프링을 다양한 예제를 천천히 따
www.yes24.com
'정리용 > SpringBoot' 카테고리의 다른 글
[Spring] 3. SpringContext - Bean 주입 (0) | 2025.02.19 |
---|---|
[Spring] 3. SpringContext - Bean 등록 (1) | 2025.02.19 |
[Spring] 2-2-2. Spring MVC - Servlet 객체 / FrontController (0) | 2025.02.07 |
[Spring] 2-2-1. Spring MVC - Controller의 반환 값 (1) | 2025.02.07 |
[Spring] 2-2. Spring MVC - 구조와 동작 (0) | 2025.02.07 |
- Total
- Today
- Yesterday
- useReducer
- Nginx
- useState
- useRef
- acas#acas7기
- ASAC
- useContext
- ssh
- git
- useCallback
- asac7기
- asac7#asac
- asac#asac7기
- react
- asac7
- acac
- useEffect
- memo
- useLayoutEffect
- useMemo
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |