U E D R , A S I H C RSS

Spring/�험스터디/2011

1. 스터디 소개

  • Spring Framework 3를 íƒ�험해보ìž�!
  • 스터디 시간
    • 2011ë…„ 1ì›” 7ì�¼~2ì›” 25ì�¼ : 매주 금요ì�¼ 7시. 그리고 필요하면 ë�” 모임
    • 2011ë…„ 3ì›” : 매주 토요ì�¼ 3시

3. 목표

  • Springì�˜ 핵심 가치와 ì›�리ì—� 대한 ì�´í•´

4. 주�재

  • 토비ì�˜ìŠ¤í”„ë§�3
  • 1부는 예제를 ì �ì§„ì �으로 개선해 나가ë�„ë¡� 구성ë�˜ì–´ 있으므로 ê°�ê°�ì�˜ 개선ì�´ 무엇ì�„ 개선시켜나가는 것ì�¸ì§€ ì�´í•´í•˜ëŠ” 것ì�´ 중요
  • Spring Framework 3 다루는 다른 êµ�재 가능
  • êµ�재가 비싸고 매우 무거워 참여ìž�들ì�´ 스터디ì—� 활용할 수 있ë�„ë¡� ZeroPage 책장ì—� 둘 토비ì�˜ 스프ë§� 3를 2ê¶Œ 주문함

5. 진행 방�

  • 세미나가 아니ë�¼ ê°�ìž�ê°€ 공부한 것ì�„ 바탕으로 공유하고 정답ì�„ 찾아나가는 스터디
  • 코치는 리ë�”ê°€ 아니ë�¼ 네비게ì�´í„°ì�˜ ì—­í• 
  • 스터디 모임ì—�서는 ê°�ìž� 한 주간 학습하고 과제를 수행한 경험ì�„ 공유하고 ê¶�금ì¦�ì�„ í•´ê²°

6. 규칙

  • 코치 ì°¸ì„� 여부와 ìƒ�관없ì�´ 스터디를 정시ì—� 시작한다.
  • 스터디 대ìƒ�ì�´ 매우 방대하므로 충분한 ê°œì�¸ì �ì�¸ 학습과 과제 수행, 그리고 스터디 모임ì—�서 ë§Žì�€ 질문ì�„ í•  것
  • ì�¸ì›�ì�´ 충분하므로 제때 ë”°ë�¼ì˜¤ì§€ 않는 사람ì�€ 부담없ì�´ 버릴수ë�„?!

7. ì§„í–‰

7.1. 1ì›”

7.1.1. ìœì„�ì²´í�¬

7.1.2. 7�

  • 7시 ~ 9시 30ë¶„ @ 6피
  • 킥오프
    • 리ë�” ì„ ì •
    • êµ�재 소개
    • ì§„í–‰ ë°©ì‹� ê²°ì •
    • 들어가며
  • 피드백

7.1.3. 14�

  • 과제: SpringSource Tool Suiteì—�서 Spring MVC Template 프로ì �트 ìƒ�성
  • 토ì�µì„¬ìœ¼ë¡œ ê°„... 강소현...

7.1.3.1. 회고

7.1.3.1.1. 서�주
21�� 한 것들
  1. 배운 것
    1.1 ApplicationContext를 �성할 시 xml� 사용하는 방법� 있고 �접 설정해주는 방법� 있는� xml� 사용할시 좋� �� 코딩과 설정 담당� 분리할 수 있다는 �� 있다.
    1.2 pojo기반� 프로그래�� 모듈� 조립해서 쓰기 쉽기 떄문� 재사용성� 높아진다. � 때 조립� 코드부분� 맡기면 조립시 코드를 바꿔야 컴파�� 가능하지만 xml� 조립� 맡기면 설정xml� 바꾸는 것만으로� 쉽게 설정� 바꿔서 조립� 가능하다.
    1.3 테스트 가능한 프로그램 : 모듈화가 잘 �어있어야 함(관심사 분리) 모듈� 먼저 만들어서 테스트하고 후� 조립� 한다. TDD 개발시 TDD�전� 테스트 가능한 프로그램� 만들어야 한다.
    1.4 TDD : 테스트 주� 개발. 지금 구현하는 것 하나만 테스트해�. 실패하고 바로 성공시켜� �는 �칙� 개발방법. 1. 무조건 성공시키는 코드 작성. 2. 임시 ��터로 테스트 시 성공하는 코드를 작성. 3. 진짜로 ��터를 넣었� 시 성공하는 코드를 작성. 순으로 구현함.
4�� 한 것들
  1. 배운 것
    1.1 RESTful : �기종간 통신. RESTful 웹서비스는 리소스 URI를 알면 웹서버와 웹���언트� 종류� �관없� HTTP 프로토콜만으로 접근 가능한 서비스� 할 수 있다. 리소스 하나� 하나� URL� 할당해놓았다.
    1.2 http� 4가지 method : POST, GET, PUT, DELETE
    리소스 함수� 4가지 method : CRUD(Create, Read, Update, Delete)
    DB� 4가지 method : Insert, Select, Update, Delete
    1.3 Resttemplate : spring�서 RESTful� 접근하기 위한 template. spring�서 ��터를 받아오는 방법.
7.1.3.1.2. 서민관
  • 14ì�¼ì—� 한 것들
    1. 배운 것
      1.1. 전략 패턴 : 전략(알고리즘)� 분리를 한다는 �미. 언어� 따� 패턴� �용하는 방법� 조금씩 다를 수� 있다. 책�서는 interface를 사용해서 전략� 분리하였는�, �것� �바� 어울리는 전략� 분리�고 한다.
      1.2. Runtime Injection : 다형성ì�„ 만들기 위해서 사용한 방법. ê°œì�¸ì �으로 코딩할 때 다형성ì�˜ 사용ì�´ 좀 부족하다고 ëŠ�꼈는ë�°, Runtime시ì—� 오브ì �트간ì�˜ 관계를 맺게 하지 않고 그냥 í�´ëž˜ìФì—� ë§žì˜ ì½”ë”©ì�„ 했기 때문ì�¸ 것 같다. 앞으로 코딩ì�„ 하는ë�° 머릿ì†�ì—� 넣어ë‘�ê³  ìž�주 ì�¨ 보는 것ì�´ 좋ì�„ 것ì�´ë�¼ ìƒ�ê°�ë�œë‹¤.
    2. 문제�
      2.1. Class.forName() �러 : 해결 방법� 아래� 서술.
    3. MVC 프로�트
      - HomeController.java� home()�서 Welcome home!� 하고 return "home";� 하는� 프로�트를 실행해보면 Hello world!가 나온다. 어떻게 � 것�가.
      - HomeController는 MVC 모�� 컨트롤러로 뷰� 모�� 바�딩하는 역할� 담당한다. home() 메소드 내부� Welcome home!� logger� �히는 문�열�기 때문� 실제로 실행시� 보�는 것� 아니다. HomeController가 하는 주� 역할� return "home";� 함으로� HomeController를 사용하는 쪽�서 home.jsp(뷰)를 찾� 수 있게 하는 것�다.
      - 결국 화면� 나타나는 것� 뷰� home.jsp�므로 Hello world!는 �쪽� 들어있다.
  • ì�´í›„ì—� 한 것
    1. Class.forName() �러 해결(p.59, 60� 예제 실행).
      1.1. 우선 MySQL� 받아서 설치한다.
      1.2. MySQL 실행 후 test 테�블 선�. 책� 예제대로 users를 만든다.
      1.3. 책� 소스를 그대로 쳤� 경우 Class.forName("com.mysql.jdbc.Driver"); 문장�서 �러가 나는� �터넷�서 mysql-connector-java-X.X.X.jar 를 받아서 참조 ��브러리� 추가한다.
      1.4. Connection c = DriverManager.getConnection(...); 문장�서 �러가 나는� 문�열� localhost/springbook 부분� �신� 사용할 테�블� �름으로 바꾸어 주어야 한다. localhost/test로 바꿔준다. �후� 문�열 � 개는 �� �신� MySQL 계정 �름(기본값 root), MySQL 비밀번호를 �어주면 �다.
      1.5. 실행 -> 완료.
    2. 스프� 프레임워� 사용하기(p.99� 예제)
      2.1. ìš°ì„  ì±…ì—�서 외부 ë�¼ì�´ë¸ŒëŸ¬ë¦¬ë¥¼ 사용하고 있는ë�°, STSì—�는 필요한 ë�¼ì�´ë¸ŒëŸ¬ë¦¬ê°€ 들어있지 않ì�€ 것 같다. ì�´ìª½ 페ì�´ì§€(http://www.tutorials4u.net/spring-tutorial/spring_install.html)를 ë³´ê³  ë�¼ì�´ë¸ŒëŸ¬ë¦¬ë¥¼ 받아야 한다. 받아서 ì••ì•ì�„ 풀고 spring-framework-3.0.5.RELEASE/dist í�´ë�”ì—� 있는 jar 파ì�¼ë“¤ì�„ 프로ì �트ì—� í�¬í•¨ì‹œì¼œì£¼ë©´ AnnotationContext, AnnotationConfigApplicationContext, @Configuration, @Bean 등ì�„ 사용할 수 있게 ë�œë‹¤.
  • 21ì�¼ì—� 한 것들
    1. 배운 것
      1.1. DIP : 멤버 변수를 외부�서 주입 받� 때는 구체 �래스가 아닌 �터페�스를 �용한다. 최대한 �래스 내부�서 변수를 할당하지 �고(new를 사용하지 �고) 주입� 받�� 한다.
      1.1.1. Context : 스프�� DI 기술� 많� 사용하고 있는�, 스프��서 �체간� �존관계 주입� 코드로부터 분리하는 역할� Context가 담당하고 있다.
      1.2. 불변�체와 가변�체 : 불변�체는 �성� �후� 내부� 필드� 대한 수정�가 없는 �체를 �한다. 내부 필드� 접근� 불가능하기 때문� 값� 변하지 않는다. 따�서 한 번 �성한 �후�는 필요한 곳� 같� �체를 재사용할 수 있다. 가변�체는 내부� 값� 접근할 수 있는 메소드를 공하는 �체를 �한다. 가변�체를 불변�체처럼 한 번 �성한 후� 여러 곳�서 사용할 경우 한 곳�서만 값� 바뀌어� 모든 값� 다 바뀌므로 가변�체는 매번 사용할 때 마다 새로 �성(new)� 해 주어야 한다.
    2. 해결한 것
      2.1. 스프�� ConfigurationContext 내부� Bean�서 Context를 �성해서 DI를 하려고 했� 때 오류 발� : Context 내부�서 Context를 �성하는 코드를 사용했기 때문� �성� 재귀�으로 �루어져서 무한 반복�다. 그리고 디버그 시 main �전� �러가 �어났는�, 그것� 스프�� Context는 시작 전� Bean들� �성하기 때문�다. main� 진입하기 �전� 스프� 초기화 단계�서 오류가 �어났다는 얘기.
7.1.3.1.3. 김수경
  • 지난주ì—� 한 것
    1. Spring MVC Template Project �성하여 실행해보려다 실패.
    2. 토비� 스프� 1.2까지 ��.
  • 막혔ë�˜ 것
    1. Spring Project를 �성하고 실행하는� Tomcat 설치가 필요하여 플러그� 설치함.
    2. Spring Project를 �성하고 실행하는� �트가 �미 사용중�� �지 않�.
    3. 책 1장�서 Statement와 PreparedStatement를 봤는� � 개� 차��� 잘 모르겠다.
7.1.3.1.6. ���

95page framework� 대한 해설.
library와 framework� 차��.


- Framework 제어� 역전 개�� �용� 대표�� 기술
- Framework 와 library가 같�것� 아님

- ��브러리를 사용하는 애플리케�션 코드는 애플리케�션 �름� �접 제어한다.
- 프레임워�는 거꾸로 애플리케�션 코드가 프레임워�� �해 사용�다.
7.1.3.1.7. 강소현
Ioc로 DaoFactory를 만드는 것까지 했습니다 ㅠㅠ

spring-framework-3.0.5.RELEASE/dist ��� 있는 jar 파�들� 프로�트� �함시켰는�,
책� jar 파� 목�� 있� 것 중 org.springframework.~~ 가 아닌 것들� 빠져있어서 그런가 아래와 같� 오류가 나는..
아니면 pom.xml� �함 안시키고, ��브러리로 추가해서 그런 걸지�??


Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:160)
at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:213)
at org.springframework.context.support.GenericApplicationContext.<init>(GenericApplicationContext.java:101)
at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:63)
at springbook.user.dao.UserDaoTest.main(UserDaoTest.java:13)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 5 more

7.1.4. 17�

7.2. 2ì›”

7.2.1. ìœì„�ì²´í�¬

2/4 2/11 2/18 2/25
강성현 O(지�) O X
김수경 O O O O
서민관 O O O O
서�주 O O O O
서지혜 O O O O
강소현 O -

7.2.2. 4�

  • 3시 ~ @ 추워 죽겠는 6피

7.3. 3ì›”

7.3.1. ìœì„�ì²´í�¬

7.3.2. 5�

7.3.2.1. 서지혜

7.3.2.2. 김수경

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:05
Processing time 0.0140 sec