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

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

Spring Boot

Intro to Servlet, EJB, JSP, WS

Interstage5 SOAP서비스 설정 가이드

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

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

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

1

No Slide Title

슬라이드 1

PowerPoint 프레젠테이션

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

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

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

교육2 ? 그림

Portal_9iAS.ppt [읽기 전용]

PowerPoint Presentation

DocsPin_Korean.pages

슬라이드 1

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

PowerPoint Presentation

PowerPoint 프레젠테이션

ETL_project_best_practice1.ppt

비긴쿡-자바 00앞부속

MasoJava4_Dongbin.PDF

01-OOPConcepts(2).PDF

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

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint 프레젠테이션

Apache Ivy

JUNIT 실습및발표

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

JAVA PROGRAMMING 실습 08.다형성

MVVM 패턴의 이해

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

Design Issues

Secure Programming Lecture1 : Introduction

PowerPoint 프레젠테이션

Intra_DW_Ch4.PDF

<4D F736F F F696E74202D20C1A632C8B8C7D1B1B9BDBAC7C1B8B5BBE7BFEBC0DAB8F0C0D32D496E E D56432E BC8A3C8AF20B8F0B5E55D>

JVM 메모리구조

02 C h a p t e r Java

PowerPoint Presentation

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

09-interface.key

gnu-lee-oop-kor-lec06-3-chap7

C# Programming Guide - Types

12-file.key

Spring 3의 JSR 303 지원

ibmdw_rest_v1.0.ppt

05-class.key

초보자를 위한 ADO 21일 완성

슬라이드 1

Spring Boot/JDBC JdbcTemplate/CRUD 예제

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

ThisJava ..

파워포인트 템플릿

01( ) SAV12-04.hwp

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

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

thesis

untitled

NoSQL

슬라이드 1

OOP 소개

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

PowerPoint Presentation

PowerPoint Presentation

07 자바의 다양한 클래스.key

Microsoft Word - java19-1-midterm-answer.doc

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

PowerPoint 프레젠테이션

thesis

PowerPoint 프레젠테이션

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로

final_thesis

개발을 통한 자기수양

Microsoft PowerPoint - 2강

Dialog Box 실행파일을 Web에 포함시키는 방법

유니티 변수-함수.key


Microsoft PowerPoint - 테스트주도개발.pptx

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

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

KYO_SCCD.PDF

Network seminar.key

Service-Oriented Architecture Copyright Tmax Soft 2005

Microsoft PowerPoint - Lect04.pptx

슬라이드 1

자바 프로그래밍

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

PowerPoint Presentation

JMF2_심빈구.PDF

슬라이드 1

자바GUI실전프로그래밍2_장대원.PDF

Week13

PCServerMgmt7

Transcription:

Spring Roo 와함께하는 쾌속웹개발 정상혁, KSUG (www.ksug.org)

목차 1. Tool 2. Demo 3. Application

1. Tool 1.1 개요 1.2 Command line shell 1.3 Round-trip 1.4 익숙한도우미들

1.1 개요 Text Based RAD Tool for Java Real Object Oriented의첫글자들 Spring, Maven, JUnit 등바탕의코드자동생성 Round-trip 지원 No Lock in, No runtime dependency Roo를위한인터페이스, 슈퍼클래스없음 Roo의특성을제거하기쉬움 4

1.2 Command Line Shell 똑똑한 Shell 제공 Tab completion Hint, Help Context-aware, Command hiding Script 기록, 실행 명령수행이 Transactional 작업수행중이상하면 undo Backup 5

1.3 Round Trip 양방향코드자동생성 도구와사람이걲드리는파일분리 사람은 *.java, *.xml만싞경쓰면됨 File system monitoring Shell 이떠있는동안에자동감지.java,.xml 파일의변화를.aj에반영 UI 자동생성여부는옵션 6

1.4 익숙한도우미들 Java홖경의지원도구들 Maven Library 관리. Build lifecycle AspectJ 컴파일 JUnit Selenium Eclipse Spring Tools Suite M2Eclipse AJDT (Aspect J 지원 Plug-in) 7

2. Demo 2.1 Demo 진행 2.2 소스분석

2.1 Demo 진행작업내용 프로젝트생성 Entity 추가 Controller 추가 Selenium 테스트추가 테스트코드실행 Tomcat에서실행 Selenium 테스트실행 9

2.1 Demo 진행작업내용 Roundtrip 확인 Getter 추가, field 삭제 Script 저장, Script 실행 Backup Roo 제거 10

2.1 Demo 진행 화면 11

2.2 소스분석 생성결과 모든소스는생략된것이아니고, 기능을다하는클래스 Entity class 소스에는 getter/setter 가없지만 Mixin 으로생성됨 @Entity @RooEntity @RooJavaBean @RooToString public class Guest { @Size(max = 30) private String name; private Integer price; private Boolean speical; } 12

2.2 소스분석생성결과 Controller class REST의 CoC @RooWebScaffold(automaticallyMaintainView = true, formbackingobject = Guest.class) @RequestMapping("/guest/**") @Controller public class GuestController { } 13

2.2 소스분석생성결과 Test class Assert 로직도 Mixin으로삽입됨 @RooIntegrationTest(entity = Guest.class) public class GuestIntegrationTest { @Test public void testmarkermethod() { } } 14

3. Application 3.1 구성기술와구조 3.2 Spring 3.0 3.3 AOP 3.4 ORM 3.5 확장 15

3.1 구성기술과구조 Full Stack, CoC 모든 Layer 기술을다제공 Seam, Ruby on Rails처럼강한주장이있는프레임웍 Convention Over Configuration Best practice를 Convention으로심음 16

3.1 구성기술과구조단순 2단구조 Entity + Controller Java 파일단 2개 Active Record 패턴적용 DAO(Data Access Object) 와의이별 Aspect로관심사의분리 Static 메소드테스트기능제공 17

3.1 구성기술과구조 Active Record Pattern Domain object 에 Data access logic 이들어감 Guest guest = Guest.findByName( 박성철 "); guest.setspecial(true); guest.update(); Guest name special update findbyname. 18

3.2 Spring 3.0 Spring 3.0 기능홗용 REST convention support http://shopping.com/shop/product/ http://shopping.com/shop/product/1 http://shopping.com/shop/product/1/form Beans Valididation (JSR 303) public class Employee{ @NotNull @Size(min=1, max=25) private String name; @NotNull @NumberFormat(style=Style.CURRENCY) private BigDecimal income = new BigDecimal("1000"); 19

3.2 Spring 3.0 Spring 3.0 기능홗용 MVC custom name space <mvc:view-controller path="/login"/> <mvc:interceptors> <bean class= ThemeChangeInterceptor"/> </mvc:interceptors> 20

3.3 AOP Bytecode weaving 적극홗용 Roo의자동생성부분을담당 Aspect J의 Inter-type Declaration을이용한 Mixin Abstract subclassing, static crosscutting Compile time에서코드삽입 성능손해가없음 Maven plugin과 IDE의도움으로별도컴파일필요없음 @Configurable을이용한투명한 DI 기술 new로생성되는객체에도 DI 적용가능 21

3.3 AOP Bytecode weaving 적극홗용 Inter-type Declaration 으로해결한코드들 @Configurable 선언 Getter, Setter 기본 CRUD기능 Finder 검색용메소드 (findbyname 류 ) Entity의복수형 CoC를위해서 (Guest->Guests) tostring 메소드 22

3.4 ORM ORM에대한걱정들 Object Relational Mapping 성능이안좋다? 예측가능한 SQL로대응용이 캐쉬, 분산홖경적용에유리예 ) Tangosol Coherence Cache 복잡한쿼리는불가능하다? 다양한매핑방식지원 (Lazy loading, Join) 필요하면 Native SQL로호출가능 23

3.4 ORM ORM의확산 다른언어에서도.. PHP(Zend, Codeigniter), Phython(Django), Ruby등의 Java 프레임웍도 생산성 이라는말을위해서는.. JBoss Seam Play framework AribaWeb Spring ROO 24

3.4 ORM ORM 의확산 It job trend 출처 : http://www.indeed.com/jobtrends 25

3.4 ORM Roo의 JPA 지원 Provider 선택가능 Hibernate, OpenJpa, EclipseLink Open EntityManager in View" pattern 지원 OpenEntityManagerInViewFilter View에서 lazy loading 지원 출처 : http://www.indeed.com/jobtrends 26

3.5 확장다양한기술의생성도구로홗용가능 기본제공 Add-on Spring Security, Spring webflow, JMS, SMTP등 Add-on 으로확장가능구조 Custom add-on 개발가능 향후지원예정 Spring Batch, Spring Integration Spring Blaze DS & Flex GWT OSGi bundle 생성가능 27

소감또한번봄의시작이되길.. Dynamic typing 언어짂영의발젂에대한 Java 짂영의대답 Open Class vs AspectJ Mixin 더높은추상화수준으로나아가기 객체지향 Domain Specific Language 실세계언어와유사한표현을목표로 과거의유산포용하기 만드는즐거움 28

참고자료 URL http://forum.springsource.org/showthread.php?t=71985 http://www.ksug.org/101 http://jaoo.dk/aarhus-2009/file?path=/jaoo-aarhus- 2009/slides/RodJohnson_ExtremeJavaProductivityWithSpri ngrooandspring30.pdf 29