Skip to content

Commit de4b7f9

Browse files
committed
IoC 컨테이너 5부, 용어정리
1 parent 66e0c3e commit de4b7f9

3 files changed

Lines changed: 111 additions & 0 deletions

File tree

34.4 KB
Loading

백기선_스프링_핵심기술_강의_정리/readme.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,3 +139,67 @@ List로 받으면 된다, List말고 다른 컬렉션으로도 가능할까?
139139
**내가 직접 빈을 등록해야 하는 상황일 때**, functional 하게 빈을 등록해줄 수도 있다 (구동시간 단축 효과), 다만 모든 빈을 functional 하게 등록하면 다시 컴포넌트 스캔이 등장하게 된 계기와 동일해지므로 남발해선 안 된다.
140140
> 내가 직접 빈을 등록해야 하는 상황은 언제일까?
141141
142+
## IoC 컨테이너 5부 : 빈의 스코프
143+
144+
#### 스코프
145+
146+
* 빈이 생성되어 사용되는 방식
147+
148+
#### 스코프의 종류
149+
150+
* Singleton
151+
* 애플리케이션 전체에 딱 하나만 생성되어 재사용한다
152+
* Prototype
153+
* 매번 생성하여 사용한다, 다만 각 애노테이션에 따라 생성되는 시점이 다르다
154+
* Request
155+
* Session
156+
* Websocket
157+
* ...
158+
159+
#### 스코프의 문제상황
160+
161+
* 프로토타입 빈이 싱글톤 빈을 참조하면?
162+
* 아무 문제가 없다
163+
164+
* 싱글톤 빈이 프로토타입 빈을 참조하면?
165+
* 프로토타입 빈이 업데이트 되지 않는다. 즉, 새롭게 생성되어야 하는 빈이 생성되지 않고 이전과 동일한 빈이 사용된다
166+
* 해결방법
167+
* scoped-proxy
168+
* object-provider
169+
* provider(표준)
170+
171+
#### ProxyMode
172+
173+
* Proxy로 감싸자
174+
* 만약 TARGET이 CLASS면 CLASS기반 Proxy로 감싼다
175+
* 다른 빈들이 해당 빈을 사용할 때 프록시로 감싸진 프록시 빈을 사용하게 한다
176+
* 프록시로 감싸게 되면 싱글톤 빈 안에서 프로토타입 빈을 사용에 대해서 프로토 타입 빈은 매번 새로운 빈이 생성될 수 있다
177+
178+
![proxy](images/proxy.jpg)
179+
http://seanzhou1023.blogspot.com/2015/10/4-spring-in-action-aspect-oriented.html
180+
181+
#### TARGET_CLASS
182+
183+
* cglib라는 써드파티 라이브러리로 가능한 것이다
184+
* JDK기반 프록시는 Interface까지만 프록시로 감쌀 수 있다
185+
186+
#### 프록시 인스턴스
187+
188+
* 빈으로 등록되어 있어서 필요한 곳에서 주입받으면 된다
189+
190+
#### 프록시 패턴
191+
192+
* 프록시 빈은 실제 빈(프록시에 의해 감싸진 빈)을 상속해서 만든 것이다. 따라서 실제 빈과 같은 타입으로 받을 수 있다
193+
194+
#### Object Factory
195+
196+
* 이를 이용하면 스프링코드가 프로덕트 코드에 침투하게 된다
197+
* 취향차이지만 코드 중간에 삽입되기보다는 애노테이션 선언부에만 스프링 코드가 들어가는 프록시를 이용한 방법이 나아보인다
198+
199+
200+
#### 싱글톤 주의점
201+
202+
* 싱글톤의 경우 thread-safe하게 코딩해야 한다
203+
* 단점은 애플리케이션 구동시 싱글톤으로 지정된 빈을 다 만들어야 해서 구동시간이 길어질 수 있다
204+
205+

용어 정리/readme.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# 용어 정리
2+
3+
## 서버
4+
5+
* Web Server
6+
* WAS (Web Applicatoin Server)
7+
* Apache
8+
* Web Server의 한 종류
9+
* C언어로 개발됨
10+
* Httpd(Http Daedom)라고 불리기도 함
11+
* 로드밸런싱 가능함
12+
* Apache Tomcat
13+
* WAS의 한 종류
14+
* Java로 개발됨
15+
* Tomcat 5.5부터는 Apache(Web Server)의 native 모듈을 이용하여 Apache와 비슷한 성능으로 정적(static) 파일을 처리할 수 있음
16+
* Servlet Container를 통해 Java로 작성된 Servlet들의 life cycle을 관리할 수 있음
17+
18+
## 기타
19+
20+
* JPA
21+
* Java Persistence API
22+
* 자바 진영에서 만든 ORM 표준
23+
* JPA의 구현체로는 Hibernate, TopLink, JDO가 있다
24+
* Hibernate
25+
* Hibernate ORM의 줄임말
26+
* Java를 위한 Object/Realation Mapping Framework
27+
* ORM
28+
* Object-Realation Mapping
29+
* OOP를 지원하는 시스템과 다른 시스템 사이에서 발생하는 타입 불일치를 해결하기 위해 데이터를 변환하는 프로그래밍 기술
30+
31+
* ORM, JPA, Hibernate ORM
32+
* 자바 진영에서 ORM 표준으로 지정한 것이 JPA
33+
* JPA에 기술된 spec에 따라 구현된 구현체가 Hibernate ORM(줄여서 Hibernate)
34+
35+
## 자바
36+
37+
* 클래스파일(.class)
38+
* 바이트코드
39+
40+
* 참고
41+
* Tomcat : http://limmmee.tistory.com/4
42+
* Apache : https://askubuntu.com/questions/248404/is-there-any-difference-between-apache2-and-httpd
43+
* Tomcat VS Apache : https://stackoverflow.com/questions/38194756/usage-difference-between-apache-and-apache-tomcat
44+
* JPA : https://en.wikipedia.org/wiki/Java_Persistence_API
45+
* JPA : 책<자바 ORM 표준 JPA 프로그래밍>, 9p
46+
* ORM : https://en.wikipedia.org/wiki/Object-relational_mapping
47+
*

0 commit comments

Comments
 (0)