File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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+
Original file line number Diff line number Diff line change 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+ *
You can’t perform that action at this time.
0 commit comments