from spring 1.x to spring 2toby.epril.com/upload/jco8-fromspring1.x_to_spring2.0.pdf ·...

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

Upload: others

Post on 22-May-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

From Spring 1.xFrom Spring 1.x

To To Spring 2.0Spring 2.0

이일민 (Consultant, Epril)

안영회 (Consultant, Epril)

Page 2: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

2

목차

q Spring의목표와전략

q Spring 2.0

q Core Container and DI

q AOP

q Portable Service Abstractions

q Web

q Spring Portfolio

Page 3: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

3

Spring 2.0으로가는길

q Spring 2.0을잘알고싶다면 Spring의

목표와전략을잘이해하는것이그첫

걸음이다

q Spring의기능위주로접근하면 Spring을제대로알기힘들다

q그리고나서 Spring 2.0이 1.x에비해서그

목표와전략을어떻게더발전시켰는가를이해하도록한다

Page 4: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

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애플리케이션개발을쉽고견고하게

Page 5: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

5

Spring의목표

q Spring을이해하는가장좋은방법은 Spring

이지향하는목표를이해하는것이다q Spring의목표

qPOJO를이용한애플리케이션개발q 엔터프라이즈서비스를

선언적(declarative), 비침략적(non-invasive)인방법으로 POJO에적용q자바코드에수정을주지않고트랜잭션을적용

q POJO를그대로WebService, RMI 서비스endpoint로사용

Page 6: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

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방식을사용하지않는다

Page 7: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

7

POJO 방식의장점 (1)

q코드가간결해진다q 높은유연성을가진다

q 재사용에유리하다

q 이해가쉽다

q코드가특정환경에의존적이지않는다q 개발자가 Infrastructure가아닌업무로직

(business logic)에집중할수있다

q 고립된상태에서테스트(isolation test)하기가쉽다

Page 8: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

8

POJO 방식의장점 (2)

q개발자들이특정기술에대한관심보다 OO디자인원칙에집중할수있도록해준다

Page 9: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

9

Declarative Service (1)

q POJO 개발이좋다는것은알지만엔터프라

이즈애플리케이션을만들기위한많은엔터프라이즈서비스를어떻게적용할것인가?

q 1) POJO의장점을포기하고적당히타협한다 (EJB…)

q 2) 선언적인서비스로 POJO를

decorate한다.(Spring!)

Page 10: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

10

Declarative Service (2)

q POJO와선언적서비스를이용하면POJO코드를그대로유지한채로

q JTA 트랜잭션에서 JDBC 트랜잭션으로

q RMI endpoint에서 SOAP endpoint로

전환이가능하다

Page 11: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

11

Spring의전략

FLEXIBLE

JBO O-TC NEIR DET

S PM EL

TES

L

AB

E

Page 12: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

12

Spring의기술

q Enabling technologies

POJO

Portable Service Abstraction

Page 13: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

13

Spring 2.0

q Spring 1.x와완벽한호환q Spring 1.x 코드를그대로확장

q POJO기반의개발이라는목표유지

q많은새로운기능의추가를통해서더강력(powerful)한방법으로더단순(simple)하게작업을수행할수있도록만들었다

Page 14: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

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 버전으로확장

Page 15: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

15

Spring2.0 IoC/DI Container

qNamespace를이용한설정의단순화

q Bean Lifecycle(scope)의확장

q Singleton, prototype, request, session

q Custom scope

q JVM기반의 (스크립트) 언어 bean 지원

q Groovy

q JRuby

q BeanShell POJO

Page 16: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

16

Namespace를이용한 XML 설정

q Spring 1.xq <bean id=“” class=“” >

<property name=“” ref=“” />……

</bean>

q Spring 2.0q <bean />

q <jee:* /> JNDI, JEE

q <util:* /> Common Task

q <lang:* /> 스크립트언어

q <aop:* /> AOP

q <tx:* /> 트랜잭션관리

Page 17: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

17

Namespace를이용한 XML 설정

q XML Schema Validation

q 다양한툴의지원

q 코드완성기능

q도메인에특화된자유로운설정가능

q 개발자가만든 Custom namespace/tag

q Spring설정이 XML hell이라는것은거짓

q 3-rd party의 Spring component 개발이가능

qDTD(1.x)/Schema(2.0) 동시지원

Page 18: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

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 코드자동완성지원

Page 19: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

19

Namespace를이용한 XML 설정

q여러개의 bean을 tag하나로정의하기<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>

1

2

3

4

<tx:annotation-driven />

Page 20: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

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

Page 21: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

21

JVM 언어 bean 지원

q다양한언어로 bean 개발가능

q Spring 2.0은 JVM레벨의컨테이너

q스크립트언어의활용

q JRuby, Groovy, Beanshell

q 새로운언어지원추가

q Refreshable Bean 기능

Page 22: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

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

Page 23: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

23

AOP의필요성

q POJO를유지하며다음의요구사항을충족하려면?

q Service Layer는반드시트랜잭션안에서실행되야한다

q Hibernate를직접이용하는 DAO작업이실패할때발생하는 exception을변환한다

q Controller/JSP에서는 DAO를바로호출할수없어야한다

q 중요한 busimess method 실행이실패하면여러차례재시도를한다

Page 24: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

24

@AspectJ를이용한 Aspect설정

@AspectJpublic 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>

Page 25: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

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>

Page 26: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

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

Page 27: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

27

Portable Service Abstraction

q SimpleJdbcTemplate

q Java5의새로운기능을적용

q Varargs, Autoboxing, Parameterized methods

jdbcTemplate.queryForInt("SELECT COUNT(0) FROMT_CLIENT WHERE TYPE=? AND CURRENCY=?",new Object[] { new Integer(13), "GBP" }

);

jdbcTemplate.queryForInt("SELECT COUNT(0) FROMT_CLIENT WHERE TYPE=? AND CURRENCY=?",13, "GBP"

);

Page 28: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

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

Page 29: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

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” />

Page 30: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

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

Page 31: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

31

Spring Portfolio

q Spring Framework의뛰어난유연성과확장성을통해서다양한확장프레임워크와솔루션의발전

q J2EE의전영역, 레이어, 다양한기술을지원

q Interface21뿐아니라다양한오픈소스개발자와기업을통해서자발적으로발전

q Spring Core Framework(SFW)과 서브프로젝트, 3-rd party product들로구성

Page 32: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

32

Spring Portfolio

qData Access Layer

q JDBC, iBatis, JDO, Hibernate, TopLink지원

q JPA지원(Hibernate, OpenJPA, Toplink essentials)

q Enterprise system: CICS, JMS, JCA CCI

q Spring LDAP

Page 33: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

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

Page 34: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

34

Spring Portfolio

qClustering

q Coherence’s DataGrid for Spring

q Terracotta

q Gigaspace for Spring

q Security

q Acegi Security (Spring Security)

Page 35: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

35

Spring Portfolio

q Presentation Layer

q Spring Rich Client

q SpringMVC

q Spring Web Flow

q SpringIDE

q Ajax: DWR for Spring

Page 36: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

36

Spring Portfolio

qWeb Services

q Simple RPC: XFire Exporter

q Spring Web Services

q OXM

q SpringMVC 방식의 Service Framework

qWS-Security와 SpringSecurity의통합

q AOP

q SpringAOP

q AspectJ

Page 37: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

37

Spring Portfolio

q Spring OSGi

q Spring 2.1에서정식지원

q 새로운 Module/Hot deployment 표준

q Spring을이용해서 OSGi bundle을손쉽게작성

q OSGi namespace

Page 38: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

38

Spring Portfolio

q다이나믹스크립트언어통합

q JRuby

q Groovy

q Beanshell

Page 39: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

39

참고자료

q Expert One-on-One J2EE Development without EJBq Rod Johnson, Juegen Hoeller

q Spring 2.0 Reference Manualq http://static.springframework.org/spring/docs/2.0.x/ref

erence/index.html

q Spring 2.0 What’s New and Why It Mattersq 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 Onq TheSpringExperience 2006

Page 40: From Spring 1.x To Spring 2toby.epril.com/upload/JCO8-FromSpring1.x_To_Spring2.0.pdf · 2008-12-25 · 3 Spring 2.0으로가는길 qSpring 2.0을잘알고싶다면Spring의 목표와전략을잘이해하는것이그첫

감사합니다!

Q & A