Microsoft PowerPoint - JCO2007_Spring2.0_발표자료_Rev-A.ppt [호환 모드]

Similar documents
Intro to Servlet, EJB, JSP, WS

한화S&C 전사 프레임워크 제안서

No Slide Title

untitled

슬라이드 1

Interstage5 SOAP서비스 설정 가이드

Corporate PPT Template

thesis

KYO_SCCD.PDF

JavaGeneralProgramming.PDF

J2EE & Web Services iSeminar

J2EE Concepts

Web Application을 구성하는 패턴과 Spring ROO의 사례


Portal_9iAS.ppt [읽기 전용]

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - 인소프트.ppt

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

Spring 정의 2012 년 1 월 31 일화요일 오젂 9:17 1. 개요 1.1. 목적 수많은프로젝트에서프레임워크나아키텍체에대한관심없이대부분의개발을개발자의능력에젂담시키는것이일반적이다. 이는프로젝트의위험요소를증가시킬뿐만아니라개발완료후유지보수비용을증가시킴으로써추가적인비

NHN 포털 서비스 플랫폼

1

ibmdw_rest_v1.0.ppt

C# Programming Guide - Types

교육2 ? 그림

Model Investor MANDO Portal Site People Customer BIS Supplier C R M PLM ERP MES HRIS S C M KMS Web -Based

Interstage4 설치가이드

DocsPin_Korean.pages

Service-Oriented Architecture Copyright Tmax Soft 2005


- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

2Q SWG Teleweb Business Plan & 1Q Recovery Plan April 2, 2003

PowerPoint 프레젠테이션

Microsoft PowerPoint - jco2006_강의PPT-오픈씨드-이일민 v1.0.ppt [호환 모드]

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

서현수

KNOM_Conference_2008_start.ppt

슬라이드 1

초보자를 위한 C++

[Brochure] KOR_TunA

歯부장

4 주차 - SPRING 환경설정및구현 Spring 기반의웹프로젝트를구성하고싶어요 T^T Spring 기반의웹환경구축 1. web.xml 수정으로 Spring 을설정하는방법 2. eclipse Spring Plug-In 을활용한템플릿프로젝트자동구성필수는아니지만해놓으면편

PCServerMgmt7

슬라이드 1

<property name="configlocation" value="classpath:/egovframework/sqlmap/example/sql-map-config.xml"/> <property name="datasource" ref="datasource2"/> *

The Self-Managing Database : Automatic Health Monitoring and Alerting

ETL_project_best_practice1.ppt

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

SchoolNet튜토리얼.PDF

歯튜토리얼-이헌중.PDF

SW¹é¼Ł-³¯°³Æ÷ÇÔÇ¥Áö2013

[Brochure] KOR_LENA WAS_

01( ) SAV12-04.hwp

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

final_thesis

세션 3 (오이식).ppt

02 C h a p t e r Java

MasoJava4_Dongbin.PDF

13 Who am I? R&D, Product Development Manager / Smart Worker Visualization SW SW KAIST Software Engineering Computer Engineering 3

<4D F736F F F696E74202D20315F315F506F C313067B8A6C8B0BFEBC7D1BAF1C1EEB4CFBDBAC5EBC7D55FC0E5C8F1C1A4>

ecorp-프로젝트제안서작성실무(양식3)

TTA Journal No.157_서체변경.indd

untitled

Cache_cny.ppt [읽기 전용]

접근성과 웹 The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect. Tim Berners-Lee, the inventor


초보자를 위한 ASP.NET 21일 완성

1217 WebTrafMon II

Web Application을 구성하는 패턴과 Spring ROO의 사례

세션 2-2(허태경).ppt

슬라이드 1

Apache Ivy

정보기술응용학회 발표

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

RED HAT JBoss Data Grid (JDG)? KANGWUK HEO Middleware Solu6on Architect Service Team, Red Hat Korea 1

cover story3 자바기술의미래를비추는거울 스프링프레임워크 2.5 스프링프레임워크 (SpringFramework) 의세번째메이저업그레이드인스프링 (Spring) 2.5 가지난 11 월말에릴리즈되었다. 스프링의캐치프레이 즈처럼더욱간결해지고더욱강력해진 (simpler

about_by5

PowerPoint Presentation

PowerPoint 프레젠테이션

Windows Live Hotmail Custom Domains Korea

Spring Data JPA Many To Many 양방향 관계 예제

UML

rmi_박준용_final.PDF

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Orcad Capture 9.x

Apache2 + Tomcat 5 + JK2 를 사용한 로드밸런싱과 세션 복제 클러스터링 사이트 구축

6주차.key

본 강의에 들어가기 전

C H A P T E R 2

Spring Batch 2.0 시작하기

Week13

º¸µµ¿Â

001지식백서_4도

APOGEE Insight_KR_Base_3P11

소프트웨어 검증 및 설계

05-class.key

Transcription:

From Spring 1.x Spring 2.0 To 이일민 (Consultant, Epril) 안영회 (Consultant, Epril)

2 목차 q Spring의목표와전략 q Spring 2.0 q Core Container and DI q AOP q Portable Service Abstractions q Web q Spring Portfolio

3 Spring 2.0 으로가는길 q Spring 2.0 을잘알고싶다면 Spring 의 목표와전략을잘이해하는것이그첫걸음이다 q Spring 의기능위주로접근하면 Spring 을제대로알기힘들다 q 그리고나서 Spring 2.0 이 1.x 에비해서그 목표와전략을어떻게더발전시켰는가를이해하도록한다

4 Spring Framework 은 q 경량급풀스택 JSE/JEE 애플리케이션프레임워크 q 경량급 (Lightweight) q 비침략적 (Non-invasive) q 규모가작고기술이가볍다는의미가아님 q Full Stack q HelloWorld, JSE, JEE q 모든레이어 (UI, Service, Domain, Data ) q 애플리케이션프레임워크 q 애플리케이션개발을쉽고견고하게

5 Spring 의목표 q Spring 을이해하는가장좋은방법은 Spring 이지향하는목표를이해하는것이다 q Spring 의목표 qpojo 를이용한애플리케이션개발 q 엔터프라이즈서비스를선언적 (declarative), 비침략적 (noninvasive) 인방법으로 POJO 에적용 q 자바코드에수정을주지않고트랜잭션을적용 q POJO 를그대로 WebService, RMI 서비스 endpoint 로사용

6 POJO/Simple Object q POJO(Plain Old Java Object) q Martin Folwer q EJB Bean 과차별적인개념으로시작 q 특정규약 (contract) 에의존적이지않다 q EJB Home/Remote Interface q 환경 (environment) 에의존적이지않다 q 특정환경에제한을받는 class를사용하지않는다 q 특정 lookup방식을사용하지않는다

7 POJO 방식의장점 (1) q 코드가간결해진다 q 높은유연성을가진다 q 재사용에유리하다 q 이해가쉽다 q 코드가특정환경에의존적이지않는다 q 개발자가 Infrastructure 가아닌업무로직 (business logic) 에집중할수있다 q 고립된상태에서테스트 (isolation test) 하기가쉽다

8 POJO 방식의장점 (2) q 개발자들이특정기술에대한관심보다 OO 디자인원칙에집중할수있도록해준다

9 Declarative Service (1) q POJO 개발이좋다는것은알지만엔터프라이즈애플리케이션을만들기위한많은엔 터프라이즈서비스를어떻게적용할것인가? q 1) POJO 의장점을포기하고적당히타협한다 (EJB ) q 2) 선언적인서비스로 POJO 를 decorate 한다.(Spring!)

10 Declarative Service (2) q POJO 와선언적서비스를이용하면 POJO 코드를그대로유지한채로 q JTA 트랜잭션에서 JDBC 트랜잭션으로 q RMI endpoint에서 SOAP endpoint로 전환이가능하다

11 Spring 의전략 F L E T E S O B J C T - O R I E N T E D X I B L E L E S M P L E A B

12 Spring 의기술 q Enabling technologies POJO Portable Service Abstraction

13 Spring 2.0 q Spring 1.x 와완벽한호환 q Spring 1.x 코드를그대로확장 q POJO 기반의개발이라는목표유지 q 많은새로운기능의추가를통해서 더강력 (powerful) 한방법으로 더단순 (simple) 하게작업을수행할수있도록만들었다

14 Backwards Compatibility q Spring 1.x 에서 2.0 으로업그레이드하는가장빠른방법은? q Spring2.0 의 spring.jar 로덮어쓰기 q 완벽한기존버전과호환 q 1.x 기반으로개발된애플리케이션을그대로사용할수있음 q Java 1.3, 1.4, 5, 6 q Spring 프레임워크의뛰어난유연성과확장성 q 개발자자신만의 Spring 버전으로확장

15 Spring2.0 IoC/DI Container q Namespace를이용한설정의단순화 q Bean Lifecycle(scope) 의확장 q Singleton, prototype, request, session q Custom scope q JVM 기반의 ( 스크립트 ) 언어 bean 지원 q Groovy q JRuby q BeanShell POJO

16 Namespace 를이용한 XML 설정 q Spring 1.x q <bean id= class= > <property name= ref= /> </bean> q Spring 2.0 q <bean /> q <jee:* /> JNDI, JEE q <util:* /> Common Task q <lang:* /> 스크립트언어 q <aop:* /> AOP q <tx:* /> 트랜잭션관리

17 Namespace 를이용한 XML 설정 q XML Schema Validation q 다양한툴의지원 q 코드완성기능 q 도메인에특화된자유로운설정가능 q 개발자가만든 Custom namespace/tag q Spring설정이 XML hell이라는것은거짓 q 3-rd party의 Spring component 개발이가능 q DTD(1.x)/Schema(2.0) 동시지원

18 Namespace 를이용한 XML 설정 q JNDI lookup <bean id="datasource" class="org.springframework...jndiobjectfactorybean"> <property name="jndiname" value="jdbc/jpetsore" /> </bean> <jee:jndi-lookup id="datasource" jndi-name="jdbc/jpetstore"/> IDE 코드자동완성지원

19 Namespace 를이용한 XML 설정 q 여러개의 bean 을 tag 하나로정의하기 2 3 1 4 <bean class="org.springframework...defaultadvisorautoproxycreator"/> <bean class="org.springframework...transactionattributesourceadvisor"> <property name="transactioninterceptor ref="transactioninterceptor"/> </bean> <bean id="transactioninterceptor class="org.springframework...transactioninterceptor"> <property name="transactionmanager ref="transactionmanager"/> <property name="transactionattributesource"> <bean class="org.springframework...annotationstransactionattributesource"> </bean> </property> </bean> <tx:annotation-driven />

20 Lifecycle(Scope) 지원 q Sprng 1.x q Singleton, Prototype q Spring 2.0 q Bean Object 의저장방법에따라다양한 Scope 로확장 q Request q Session q Clustered Cache q Custom Scope

21 JVM 언어 bean 지원 q 다양한언어로 bean 개발가능 q Spring 2.0 은 JVM 레벨의컨테이너 q 스크립트언어의활용 q JRuby, Groovy, Beanshell q 새로운언어지원추가 q Refreshable Bean 기능

22 Spring 2.0 AOP q <aop:* /> 태그지원 q AspectJ와긴밀한연동 q Adrian Coyler: Spring CTO, AspectJ Lead q SpringAOP의부족한점을보강 q Pointcut Expression Language q POJO Aspect(XML Schema, @AspectJ) q AspectJ language Aspect q Spring bean 이아닌 object 에 Aspect 적용가능 POJO

23 AOP 의필요성 q POJO 를유지하며다음의요구사항을충족하려면? q Service Layer는반드시트랜잭션안에서실행되야한다 q Hibernate를직접이용하는 DAO작업이실패할때발생하는 exception을변환한다 q Controller/JSP에서는 DAO를바로호출할수없어야한다 q 중요한 busimess method 실행이실패하면여러차례재시도를한다

24 @AspectJ 를이용한 Aspect 설정 @AspectJ public class EMailNotificationAspect { EMailService emailservice; @After( execution(* com.xxx.yyy.service.*(string)) && args(msg) ) public void mailnotify(string msg) { eamilservice.notifybyemail(msg); } } <aop:aspectj-autoproxy /> <bean id= emailnotificationaspect" class= com.xxx.aspect.emailnotificationaspect"> <property name= emailservice ref= emailservice /> </bean>

25 XML 을이용한 Aspect 설정 public class EMailNotificationAspect { EMailService emailservice; public void mailnotify(string msg) { eamilservice.notifybyemail(msg); } } <aop:config> <aop:aspect id= emailnotification" ref= emailnotificationaspect"> <aop:after method= mailnotify" pointcut="execution(* com.xxx.yyy.service.*(string)) && args(msg) /> </aop:aspect> </aop:config> <bean id= emailnotificationaspect" class= com.xxx.aspect.emailnotificationaspect"> <property name= emailservice ref= emailservice /> </bean>

26 Portable Service Abstraction q JPA Integration q Spring의가장많은지원을받을 ORM q 기존의 ORM지원기능과일관된방식지원 q JpaTemplate q JpaDaoSupport q JpaTransactionManager q JPA 를위한추가기능 q LocalEntityManagerFactoryBean 또는 JNDI EntityManagerFactory q Class File Transformer(LTW) q AbstractJpaTests q JPA Annotation 지원 POJO Portable Service Abstraction

27 Portable Service Abstraction q SimpleJdbcTemplate q Java5 의새로운기능을적용 q Varargs, Autoboxing, Parameterized methods jdbctemplate.queryforint("select COUNT(0) FROM T_CLIENT WHERE TYPE=? AND CURRENCY=?", new Object[] { new Integer(13), "GBP" } ); jdbctemplate.queryforint("select COUNT(0) FROM T_CLIENT WHERE TYPE=? AND CURRENCY=?", 13, "GBP" );

28 Portable Service Abstraction q Asynchronous JMS q Message Driven POJO q JMS 의 MessageListener 를대신해사용할수있는 SessionAwareMessageListener 지원 q JMS Session 을사용할수있다 q Reply message q 다양한 ListenerContainer 지원 q DefaultMessageListenerContainer q ServerSessionMessageListenerContainer q SimpleMessageListenerContainer

29 Spring 2.0 Web Layer q Form Tag 지원 <spring:bind path= member.name > <input type= text name= ${status.expression} value= ${status.value} </spring:bind> <form:input path= name />

30 Spring 2.0 Web Layer q Portlet 지원 q SpringMVC 와동일한개발방식지원 q DispatcherPortlet q Handler Mappings q Handler Interceptors q Controller Hierachy q View Resolvers q Pluggable View q Data Binding, Validation

31 Spring Portfolio q Spring Framework의뛰어난유연성과확장성을통해서다양한확장프레임워크와솔루션의발전 q J2EE의전영역, 레이어, 다양한기술을지원 q Interface21뿐아니라다양한오픈소스개발자와기업을통해서자발적으로발전 q Spring Core Framework(SFW) 과서브프로젝트, 3-rd party product들로구성

32 Spring Portfolio q Data Access Layer q JDBC, ibatis, JDO, Hibernate, TopLink지원 q JPA 지원 (Hibernate, OpenJPA, Toplink essentials) q Enterprise system: CICS, JMS, JCA CCI q Spring LDAP

33 Spring Portfolio q Service Layer q Scheduling:JDK Timer, Quartz q Asychronous task: TaskExecutor (ThreadPool, CommonJ WorkManager) q Messaging q JMS기반의 Message Driven POJO q Spring Web Services: (Castor, JAXB) q ESB Integration: Mule

34 Spring Portfolio q Clustering q Coherence s DataGrid for Spring q Terracotta q Gigaspace for Spring q Security q Acegi Security (Spring Security)

35 Spring Portfolio q Presentation Layer q Spring Rich Client q SpringMVC q Spring Web Flow q SpringIDE q Ajax: DWR for Spring

36 Spring Portfolio q Web Services q Simple RPC: XFire Exporter q Spring Web Services q AOP q OXM q SpringMVC 방식의 Service Framework q WS-Security와 SpringSecurity의통합 q SpringAOP q AspectJ

37 Spring Portfolio q Spring OSGi q Spring 2.1에서정식지원 q 새로운 Module/Hot deployment 표준 q Spring을이용해서 OSGi bundle을손쉽게작성 q OSGi namespace

38 Spring Portfolio q 다이나믹스크립트언어통합 q JRuby q Groovy q Beanshell

39 참고자료 q Expert One-on-One J2EE Development without EJB q Rod Johnson, Juegen Hoeller q Spring 2.0 Reference Manual q http://static.springframework.org/spring/docs/2.0.x/ref erence/index.html q Spring 2.0 What s New and Why It Matters q http://www.infoq.com/articles/spring-2-intro q From Spring One to Spring Two, Spring Fundamentals and Philosophy, JMS in Spring 2 Environment, Spring OSGi, Get Your JRuby On q TheSpringExperience 2006

감사합니다! Q & A