Download presentation
Presentation is loading. Please wait.
Published byCecília de Santarém Gonçalves Modified 6년 전
1
백기선 WHITESHIP2000@GMAIL.COM
Springing into action 백기선
2
목차 What is Spring? A Spring jump start
Understanding dependency injection Applying aspect-oriented programming Summary
3
What is Spring?
4
What is Spring Spring is a lightweight dependency injection and aspect-oriented container and framework. Lightweight 2.5Mb Single JAR file Non intrusive Dependency Injection loose coupling
5
What is Spring Aspect-oriented Container Framework
enables cohesive development separation of concern Container it contains and manages the lifecycle and configuration of application objects. Framework configure and compose complex applications from simpler components.
6
Spring Modules
7
Spring Modules The Core Container
provides the fundamental functionality of the Spring org.springframework.beans.factory.BeanFactory 스프링의 가장 기본이 되는 컨테이너. 스프링 DI를 제공하는 기반 시설. Chapter 2
8
Spring Modules Application context module
context module is what makes it a framework. BeanFactory를 확장하여 다음의 기능들을 추가함. I18N 메시징 이벤트 핸들링 Validation supplies many enterprise services JNDI EJB와의 연동 templating frameworks(Velocity, FreeMarker)와의 연동
9
Spring Modules Spring’s AOP module JDBC abstraction and the DAO module
serves as the basis for developing your own aspects for your Spring enabled application. AOP Alliance 인터페이스에 기반하였다. AspectJ 지원. Chapter 4 JDBC abstraction and the DAO module 반복 되는 코드를 추상화 시켜서 코드 작성을 간결하고 깔끔하게 할 수 있다. 각 DB 벤더들의 에러 코드를 의미가 있는 에러 메시지로 변환하여 RuntimeException으로 던지는 추상화 계층 제공. Chapter 5
10
Spring Modules Object-relational mapping (ORM) integration module
JDBC를 직접 사용하는 대신 ORM 사용을 선호하는 분들을 위해 만들어둔 추상화 계층. Hibernate, JPA, JDO, iBATIS SQL Maps 지원. Chapter 5 Java Management Extensions (JMX) makes it easy to expose your application’s beans as JMX Mbeans. makes it possible to monitor and reconfigure a running application. Chapter 12
11
Spring Modules Java EE Connector API (JCA) The Spring MVC framework
Java EE Connection API (JCA)는 여러 메인 프레임과 DB를 포함하고 있는 엔터프라이즈 시스템들을 통합하기 위한 표준 API. JDBC 지원 기능과 마찬가지로 JCA 코딩에서 반복되는 부분을 추상화 시키는 형태로 지원. The Spring MVC framework Model, View, Controller(MVC) 패턴은 UI와 애플리케이션 로직을 분리하기 위한 접근 방법 자체 MVC 기능 구현 함. Chapter 14, 15
12
Spring Modules Spring Portlet MVC Spring’s web module
portlet-based applications aggregate several bits of functionality on a single web page. Spring Portlet MVC builds on Spring MVC to provide a set of controllers that support Java’s portlet API. Spring’s web module Spring MVC 와 Spring Portlet MVC를 지원하기 위해 기반이 되는 클래스들. Apache Struts 또는 Java-Server Faces (JSF)와 연동 지원.
13
Spring Modules Remoting Java Message Service (JMS)
자신의 자바 객체를 remote 객체로 공개할 수 있으며, 외부의 remote 객체를 애플리케이션에 엮어서 마치 local POJO 인 것처럼 사용하기 쉽게 해준다. RMI, Hessian, Burlap, JAX-RPC, Spring의 Http Invoker Chapter 8 Java Message Service (JMS) Remoting에 비해 보다 신뢰성있는 통신이 가능. helps you send messages to JMS message queues and topics. helps message-driven POJOs that are capable of consuming asynchronous messages. Chapter 10
14
A Spring jump start
15
A Spring jump start 간단한 getBean() 예제 예제 테스트 코드 작성하기 인터페이스 기반 프로그래밍
spring.jar commons-logging.jar 예제 테스트 코드 작성하기 spring-mock.jar AbstractDependencyInjectionSpringContextTests
16
Understanding dependency injection
17
Understanding dependency injection
DI means an inversion of responsibility with regard to how an object obtains references to collaborating objects
18
Dependency 머리 두 개 달린 괴물 해결책 한 쪽 머리 또 다른 머리 인터페이스 기반 코딩
테스트 어려움. 재사용 어려움. 이해하기 어려움. 두더지 잡기 경향이 있음. 또 다른 머리 없으면 동작하지 않음. 해결책 인터페이스 기반 코딩 Dependency Injection Aspect Oriented Programming
19
Dependency injection in action
DI 사용하지 않은 코드 구현. 테스트 하기 어려움. 인터페이스를 사용하여 개선. 개선 해도 문제는 여전히 남아있음. new 필요함. DI 사용하여 코드 개선. new 필요하지 않음. 종속성은 컨테이너가 알아서~ loose coupling
20
aspect-oriented programming
Applying aspect-oriented programming
21
Introducing AOP programming technique that promotes separation of concerns within a software system. AOP
22
AOP in action AOP 적용하지 않고 로깅 구현. AOP 사용하여 코드 개선. 중복되는 코드 발생. 종속성 발생.
중복 제거. non intrusive.
23
Summary
24
Summary Spring? Dependency Injection? Aspect Oriented Programming?
25
질문 or 코멘트 이대엽: 재미있었다. 흥미가 생긴다. 김보형: Spring AOP가 재밌었다.
최한수: 편하지만, 실무에 적용하려면 많은 학습이 필요함. 이윤걸: 내용이 조금 어려웠다. IoC, DI에 대한 설명. 테스트 관련 내용은 좀 주제를 벗어났었던 것 같다. 최혜영: 딴 생각을 해서... 쉬는 시간이 있었으면 좋겠다. 이호연: 스트럿츠와 연동해서 사용할 수 있는가..네. 컨테이너와 bean. 양철근: 재미있었다. 그림으로 했었으면 더 좋았겠다. 임춘봉:
26
감사합니다.
Similar presentations