2시간 만에 시작하는스프링 프레임워크 3.x        허광남    kenu@okjsp.pe.kr
토픽• 스프링 프레임워크 개요• 스프링 프레임워크로 시작하는 웹 개발• Maven 빌드 도구의 이해• 스프링 개발환경과 DB서버• 스프링 모듈 소개
스프링 프레임워크 개요• JavaEE development without EJB• 2004• 로드 존슨
프레임워크 기본 컨셉• Inversion of Control / Dependency  Injection• Aspect Oriented Programming• Portable Service Abstractions
http://www.springframework.net/docs/1.3.0/reference/html/psa-intro.html
Plain Object• POJO; Plain Old Java Object• not like Servlet• extends javax.servlet.http.HttpServlet
IoC / DI• 사용할 객체를 외부에서 주입• 생성자의 인자 또는 setter 메소스 이용• Strategy Pattern
IoC 장점• 플러그인 만들기 좋음• Interface 준수• 테스트 객체로, 주입 객체 바꿔치기
IoC/DIegovframe 실행환경교재(01.공통기반).pdf 33p
PSA• 포터블 서비스 추상화• 환경에 종속되지 않도록 유연한 추상 계층
AOP• 로깅, 트랜잭션과 같이 산재된 코드 모듈화• Advice• Pointcut• 스프링 Advisor
스프링 아키텍처
J2EE
 architecture                        http://java.sun.com/j2ee/1.4/docs/tutorial/doc/Overview7.html
J2EE
 without
 EJB                                                         http://jangsunjin.tistory.com/166
스프링 아키텍처
모듈과 특징•   코어 컨테이너:    Core, Beans, Context, Expression Language•   데이터 접근/통합:    JDBC, ORM, OXM, JMS, 트랜잭션 모듈•   웹:    웹, ...
핵심 효과                      Modularity                      POJO 심플, 명료, 모듈                      Productivity              ...
More Projects•   Spring AMQP          •   Spring Mobile•   Spring for Android   •   Spring .NET  •   Spring Batch         ...
소스 아키텍처
SpringFramework Layers                  User Interface (View)   Domain Model                   Web (Controller)           ...
 http://www.javajigi.net/display/OSS/Spring_MVC_2
Request
 LifeCycle            http://www.javajigi.net/pages/viewpage.action?pageId=19398699
코드 네비게이션1. URL
 mapping2. Controller3. Service                                                  Search           ctrl+H4. DAO            ...
개발 코드 구성• Maven Style •   src/main/java/ •             /resources/ •             /webapp/ •      /test/java/ •            ...
STS• 입문할 때는 Spring Tools Suite 추천• http://www.springsource.org/sts• Maven, Git
가져오기• https://github.com/kenu/egov• zip download• File  Import...  zip• Existing Projects  archive file• Customized Local E...
Run Sample• Project  Clean...• Run as  Run on Server
새 프로젝트
Spring Template Project
Template Selection          Spring MVC Project
Template Download
Project Settings
프로젝트 구성
utf-8
utf-8프로젝트 전체 인코딩      이클립스 전체 인코딩
버전
버전http://open.egovframe.go.kr/projects/information/filearchive/5265
Maven 빌드 도구
Java Compile 단점• 패키지별로 따로 지정• make 또는 compile.bat• 클래스패스 설정 어려움
ANT• Another Neat Tool http://ant.apache.org• build.xml• project  targets  tasks• properties ${base.dir}
Maven 빌드 도구• Convention over Configuration • ANT의 자유로운 빌드 설정과 차별• Jar 의존성 관리 • 버전 명시, 프로젝트별 중복 jar 관리• 플러그인 관리 • 이클립스, 톰캣, ...
Quick Start•mvn --version•mvn archetype:generate -DgroupId=com.mycompany.app  -DartifactId=my-app  -DarchetypeArtifactId=m...
Quick Start #2                     pom.xml                                            project xmlns=http://maven.apache.or...
Build Project•mvn package•package is a phase•페이즈는 연속적인 작업들
mvn compile이면1.   validate2.   generate-sources3.   process-sources4.   generate-resources5.   process-resources6.   compi...
Maven goal• archetype:generate• archetype: is the plugin• archetype:generate is a goal• plugin은 goal 모음집• 예) eclipse:eclip...
Maven phases• validate           • install• compile            • deploy• test• package            • clean• integration-tes...
target/• java -cp target/my-app-1.0-  SNAPSHOT.jar com.mycompany.app.App• Hello   World!
m2eclipse• eclipse plugin• little buggy
Deployment Assembly
Nexushttp://cwgkorea.net/zbxe/cwg_consensus/44551
 
without                                         Intranet   InternetDev
 A                                                    CentralDev
 B
Upcoming SlideShare
Loading in …5
×

okspring3x

19,759 views

Published on

2시간 만에 시작하는
스프링 프레임워크 3.x

Published in: Technology
1 Comment
20 Likes
Statistics
Notes
  • 형님, 좋은 내용 잘 보았습니다. spring 하면 웹 프로젝트만 생각하는 분들이 많은데, 서버 단에 대한 설명도 있으면 더 좋을 것 같습니다. 아울러 빌드도구로써의 maven + 사설 리포지토리 sonatype nexus, CI 툴 로써의 hudson(jenkins), QA, PMD 도구로써의 sonar 까지 풀셋으로 이어지는 자료가 되었으면 하는 바람이 있습니다. 2편도 있나요?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
19,759
On SlideShare
0
From Embeds
0
Number of Embeds
719
Actions
Shares
0
Downloads
150
Comments
1
Likes
20
Embeds 0
No embeds

No notes for slide

okspring3x

  1. 1. 2시간 만에 시작하는스프링 프레임워크 3.x 허광남 kenu@okjsp.pe.kr
  2. 2. 토픽• 스프링 프레임워크 개요• 스프링 프레임워크로 시작하는 웹 개발• Maven 빌드 도구의 이해• 스프링 개발환경과 DB서버• 스프링 모듈 소개
  3. 3. 스프링 프레임워크 개요• JavaEE development without EJB• 2004• 로드 존슨
  4. 4. 프레임워크 기본 컨셉• Inversion of Control / Dependency Injection• Aspect Oriented Programming• Portable Service Abstractions
  5. 5. http://www.springframework.net/docs/1.3.0/reference/html/psa-intro.html
  6. 6. Plain Object• POJO; Plain Old Java Object• not like Servlet• extends javax.servlet.http.HttpServlet
  7. 7. IoC / DI• 사용할 객체를 외부에서 주입• 생성자의 인자 또는 setter 메소스 이용• Strategy Pattern
  8. 8. IoC 장점• 플러그인 만들기 좋음• Interface 준수• 테스트 객체로, 주입 객체 바꿔치기
  9. 9. IoC/DIegovframe 실행환경교재(01.공통기반).pdf 33p
  10. 10. PSA• 포터블 서비스 추상화• 환경에 종속되지 않도록 유연한 추상 계층
  11. 11. AOP• 로깅, 트랜잭션과 같이 산재된 코드 모듈화• Advice• Pointcut• 스프링 Advisor
  12. 12. 스프링 아키텍처
  13. 13. J2EE
  14. 14.  architecture http://java.sun.com/j2ee/1.4/docs/tutorial/doc/Overview7.html
  15. 15. J2EE
  16. 16.  without
  17. 17.  EJB http://jangsunjin.tistory.com/166
  18. 18. 스프링 아키텍처
  19. 19. 모듈과 특징• 코어 컨테이너: Core, Beans, Context, Expression Language• 데이터 접근/통합: JDBC, ORM, OXM, JMS, 트랜잭션 모듈• 웹: 웹, 웹-서블릿, 웹-스트러츠, 웹-포틀릿• AOP와 인스트루먼테이션: 코드의 반복적인 중복을 일원화, 클래스로딩 제어• 테스트: JUnit과 TestNG
  20. 20. 핵심 효과 Modularity POJO 심플, 명료, 모듈 Productivity 70% 개발자 보고, 시간 단축 Portability 톰캣, JavaEE, 클라우드 플랫폼 Testability 유닛, 통합 테스트 쉽게http://www.springsource.org/features
  21. 21. More Projects• Spring AMQP • Spring Mobile• Spring for Android • Spring .NET  • Spring Batch • Spring Roo• Spring Data • Spring Security• Spring Framework • Spring Social• Spring Gemfire • Spring Web Flow• Spring Integration • Spring Web Services
  22. 22. 소스 아키텍처
  23. 23. SpringFramework Layers User Interface (View) Domain Model Web (Controller) Service Persistence (DAO) ref:
  24. 24.  http://www.javajigi.net/display/OSS/Spring_MVC_2
  25. 25. Request
  26. 26.  LifeCycle http://www.javajigi.net/pages/viewpage.action?pageId=19398699
  27. 27. 코드 네비게이션1. URL
  28. 28.  mapping2. Controller3. Service Search ctrl+H4. DAO Find Selection Open Resource ctrl+K ctrl+shift+R Open Definition F35. SQL Hierarchy ctrl+T Back alt+←
  29. 29. 개발 코드 구성• Maven Style • src/main/java/ • /resources/ • /webapp/ • /test/java/ • /resources/ • target/ (.gitignore) • pom.xml
  30. 30. STS• 입문할 때는 Spring Tools Suite 추천• http://www.springsource.org/sts• Maven, Git
  31. 31. 가져오기• https://github.com/kenu/egov• zip download• File Import... zip• Existing Projects archive file• Customized Local Environment
  32. 32. Run Sample• Project Clean...• Run as Run on Server
  33. 33. 새 프로젝트
  34. 34. Spring Template Project
  35. 35. Template Selection Spring MVC Project
  36. 36. Template Download
  37. 37. Project Settings
  38. 38. 프로젝트 구성
  39. 39. utf-8
  40. 40. utf-8프로젝트 전체 인코딩 이클립스 전체 인코딩
  41. 41. 버전
  42. 42. 버전http://open.egovframe.go.kr/projects/information/filearchive/5265
  43. 43. Maven 빌드 도구
  44. 44. Java Compile 단점• 패키지별로 따로 지정• make 또는 compile.bat• 클래스패스 설정 어려움
  45. 45. ANT• Another Neat Tool http://ant.apache.org• build.xml• project targets tasks• properties ${base.dir}
  46. 46. Maven 빌드 도구• Convention over Configuration • ANT의 자유로운 빌드 설정과 차별• Jar 의존성 관리 • 버전 명시, 프로젝트별 중복 jar 관리• 플러그인 관리 • 이클립스, 톰캣, Jetty 등의 연계 플러그인
  47. 47. Quick Start•mvn --version•mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven- archetype-quickstart -DinteractiveMode=false http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
  48. 48. Quick Start #2 pom.xml project xmlns=http://maven.apache.org/POM/4.0.0 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation=http://maven.apache.org/POM/4.0.0 my-app http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion|-- pom.xml`-- src groupIdcom.mycompany.app/groupId |-- main artifactIdmy-app/artifactId | `-- java version1.0-SNAPSHOT/version | `-- com packagingjar/packaging | `-- mycompany nameMaven Quick Start Archetype/name | `-- app urlhttp://maven.apache.org/url | `-- App.java `-- test dependencies `-- java dependency `-- com groupIdjunit/groupId `-- mycompany artifactIdjunit/artifactId `-- app version4.8.2/version `-- AppTest.java scopetest/scope /dependency /dependencies /project
  49. 49. Build Project•mvn package•package is a phase•페이즈는 연속적인 작업들
  50. 50. mvn compile이면1. validate2. generate-sources3. process-sources4. generate-resources5. process-resources6. compile• compile 까지의 페이즈를 순서대로 수행
  51. 51. Maven goal• archetype:generate• archetype: is the plugin• archetype:generate is a goal• plugin은 goal 모음집• 예) eclipse:eclipse, tomcat:run
  52. 52. Maven phases• validate • install• compile • deploy• test• package • clean• integration-test • site• verify
  53. 53. target/• java -cp target/my-app-1.0- SNAPSHOT.jar com.mycompany.app.App• Hello World!
  54. 54. m2eclipse• eclipse plugin• little buggy
  55. 55. Deployment Assembly
  56. 56. Nexushttp://cwgkorea.net/zbxe/cwg_consensus/44551
  57. 57.  
  58. 58. without Intranet InternetDev
  59. 59.  A CentralDev
  60. 60.  B
  61. 61. with Intranet InternetDev
  62. 62.  A Nexus CentralDev
  63. 63.  B
  64. 64. settings.xml• ~/.m2/settings.xml settings mirrors mirror idnexus/id mirrorOf*/mirrorOf urlhttp://192.168.0.8:7070/nexus/content/groups/public/url /mirror /mirrors profiles profile idnexus/id repositories repository idcentral/id urlhttp://central/url releasesenabledtrue/enabled/releases snapshotsenabledtrue/enabled/snapshots /repository /repositories pluginRepositories pluginRepository idcentral/id urlhttp://central/url releasesenabledtrue/enabled/releases snapshotsenabledtrue/enabled/snapshots /pluginRepository /pluginRepositories /profile /profiles activeProfiles activeProfilenexus/activeProfile /activeProfiles /settings
  65. 65. 관련
  66. 66.  리소스• 자바지기
  67. 67.  위키 ⁻ http://www.javajigi.net/display/SFL/Home• 전자정부표준
  68. 68.  프레임워크 ⁻ http://www.egovframe.go.kr/cop/bbs/selectBoardList.do? menu=2submenu=2bbsId=BBSMSTR_000000000002 ⁻ http://open.egovframe.go.kr/egov/download.php• Spring
  69. 69.  3
  70. 70.  Tutorial:
  71. 71.  Setting
  72. 72.  Up
  73. 73.  
  74. 74.  Configuring
  75. 75.  The
  76. 76.   Environment
  77. 77.  By
  78. 78.  Jason
  79. 79.  Tee ⁻ http://www.theserverside.com/tutorial/Spring-30-Tutorial- Setting-Up-Configuring-The-Environment
  80. 80. jPetStore Sample• git svn clone https:// src.springframework.org/svn/spring- samples/jpetstore/trunk
  81. 81. Toby Spring 3.1• 2부는 제공된 코드와 함께• 1부, 2부 CD는 동일• https://github.com/kenu/tobyspring31
  82. 82. EgovFrame• http://www.egovframe.go.kr• 실행환경(스프링 3.0.5 기반)• egovframe 2.0, 2.5• 개발 위키 추천• 오픈커뮤니티 QA 활용• http://open.egovframe.go.kr
  83. 83. KSUG• Korea Spring User Group• http://www.ksug.org• 구글그룹스 메일링 기반• 개발 전문가들 눈팅
  84. 84. QA
  85. 85. 감사합니다

×