일요일, 12월 22
Shadow

#001 Spring Conept

  1. 1.     베이직 컨셉
    1. A.     자바-언어
      1.                                  i.         Source à class(메모리에 아직 올라가지 않은 상태)->object(메모리에 올라간 상태)àcompileràDebuggerà IDE(Integrated Development Environment)àWAS(Web Application Server)
    2. B.      JavaBeans
      1.                                  i.         Java를 위한 software component Model
      2.                                 ii.         재사용 가능한 Component
      3.                                iii.         User Interface Widget(Property)
    3. C.      EJB(Enterprise Java Beans)
      1.                                  i.         Java 컴포넌트의 사상을 서버로 확장
      2.                                 ii.         Transaction, 보안, 분산처리
      3.                                iii.         복잡성 가증
    4. D.     J2EE(Sevlet Container가 처리 해야될 것들)
      1.                                  i.         Java EE WebServices Technologies
      2.                                 ii.         Java EE Web Application Technoogies
      3.                                iii.         Java EE Enterprise Application Technologies
      4.                                iv.         Java EE Management and Security Technologies
    5. E.      Java EE Web Services à Container를 만드는 기술
    6. F.      Java EE Web Application Technologes
      1.                                  i.         Java Servlet 3.0
      2.                                 ii.         Java Server Faces 2.0
      3.                                iii.         Java Server Pages 2.2
      4.                                iv.         A Standard Tag Library for java server pages(JSTL)
      5.                                 v.         Debugging Support for Other Languages 1.0
    7. G.     Java EE Enterprise Application Technologies
      1.                                  i.         Contexts and Dependency Injection for java
      2.                                 ii.         Dependency Injection for java 1.0
      3.                                iii.         Bean Valiadation
      4.                                iv.         Enterprise JavaBeans….
    8. H.     Java EE Management and Security Technologies
    9. I.       Servlet Container – JSP만 쓸 수 있게 해놓은 것 : Object 를 관리 하기 위해서  
      1.                                  i.         Java EE Web Service Technologies
      2.                                 ii.         Java EE web Application Technologies
      3.                                iii.         Object 관리
      4.                                iv.         Tomcat Regin, SunOne
    10. J.       WAS
      1.                                  i.         Java EE Web Service Technologies
      2.                                 ii.         Java EE web Application Technologies
      3.                                iii.         Enterprise Application
      4.                                iv.         Management and Security
      5.                                 v.         WebLoginc, JEUS, JBOSS
    11. K.      Spring -> Tomcat + Java EE
  2. 2.     Introduction to Spring
    1. A.     Basic Concept
      1.                                  i.         Model1 Architecture – Web 1.0 – 간단 간결  : HTTP -> stateleess 방식-> 다운로드는 빠르지만 업로드는 느린 방식 : 초창기 시스템에 필요한 방식
        1. 1.      Browser sends a request to a JSP pages
        2. 2.      JSP page communication with a java beans
        3. 3.      Java Bean is connected to a database
        4. 4.      JSP page responses to the browser
      2.                                 ii.         Model2 Architecture – Web 2.0 – servlet->JSP
        1. 1.      Browser sends a request to a servlet
        2. 2.      Servlet instantiates a java beans the connect
        3. 3.      Servlet communicates with a JSP page
        4. 4.      JSP page communicates with that java beans
        5. 5.      JSP page respond to the browser
      3.                                iii.         MVC design pattern
        1. 1.      Model : Maintain Data : Business logic plus one or mere data sources such as a relational database
        2. 2.      View display all or a portion of the data
        3. 3.      Controller handle events that affect the model or view
      4.                                iv.         Model1 or Model2
      5.                                 v.         Model 1:  simple type of web application, quick prototyping Nature of developer task, View and controller being done by the same team who is doing the work
      6.                                vi.         Model 2 : Complex type of web application, Creating an application to be Modified and maintained that Nature of developer task, view and controller being done by different teams who is doing the work
    2. B.      What is Spring?
      1.                                  i.         The most complete lightweight container : Application(able to execute Program), but Framework : library    à WAS에 비해서 가볍다(lightweight).
        1. 1.      Automated configuration
        2. 2.      Wiring of your application objects à Object Spring에서 관리 à 객체간의 이동이 가능하다. (IOC)
        3. 3.      Set loosely – coupled components(POJOs) : EJB에 비해서 객체간의 연결이 쉽다.
          1. A.     Ex) WAS APP중 Log기능만 쓰고 싶지만 Run 시키면 10초 정도 걸림à이것만을 사용하고 싶지만 Application 을 다 올려야 사용 가능
          2. B.      But Spring는 가능
          3. 4.      Deployment in any environment(J2SE or J2EE) – 두 군데 다 돌아감(JUES 뿐만 아니라 Tomcat에서도 사용이 가능하다)
          4. 5.      A Common abstraction layer for transaction management : 프로그램이 실행되는 작업 단위 à 트랜잭션의 별도의 특화된 추장적인 레이어가 있다.  *트랜잭션 처리가 중요!!!  Ibatis로 DB처리(Commit, Rollback 처리)
          5. 6.      Allowing for pluggable transaction managers
          6. 7.      Support is not tied to J2EE environments
            1. A.     JTA(Java Transaction API)
            2. B.      EJB CMT(Container Managed Transaction) : 단점 coupled 이 강하기 때문에  Container가 해준다à 은행, 금융권에서 많이 사용
      2.                                 ii.         A JDBC abstraction layer à coupled 을 줄이기 위해서 사용
        1. 1.      Offers a meaningful exception hierarchy à 사용자에게 보여지는 exception처리가 가능
        2. 2.      Simplifies error handling
        3. 3.      Greatly reduces the amount of code
      3.                                iii.         Integration with Toplink, JDO, and Ibatis SQL Maps (ORM mapping tool)
        1. 1.      DAO implementation support
        2. 2.      Support ibatis
        3. 3.      Support Hibernate
      4.                                iv.         AOP functionality : 보이는 것만 보는 관점
        1. 1.      Aspect oriented programming : 오브젝트 기반의 프로그래밍(tag관련 기법 중 하나)
        2. 2.      Fully integrated into Spring configuration management
        3. 3.      Adding aspects such as declarative transaction management
      5.                                 v.         A flexible MVC web application framework
        1. 1.      Built on core Spring functionality
        2. 2.      Accommodates multiple view technologies
          1. A.     JSP, Velocity, Tiles, iText, POI
          2. 3.      Spring middle tire can easily be combined with a web tire based on any other web MVC framework
            1. A.     Struts, WebWork, Tapestry
    3. C.      Why Spring
      1.                                  i.         EJB의 환상에서 벗어나자
        1. 1.      너무 복잡한 Spec
        2. 2.      Object들이 기술 종속적이다. (Container에 너무 종속적)
        3. 3.      Debugging 및 Test가 너무 힘들다.
      2.                                 ii.         Simplify many Java EE tasks
        1. 1.      분산 객체를 위한 Spec을 제외한 대부분의 기능이 구현됨
        2. 2.      WAS 없이도 구동가능
      3.                                iii.         Avoid tight coupling among classes
        1. 1.     Use POJOs(Plain Old Java Objects)
        2. 2.      Spring 에 종속된 Object를 만들지 않음
    4. D.     Spring Framework(=lightweight container)
      1.                                  i.         J2SE à Spring Core(IoC==DAO) à Library가 존재
        1. 1.      MVC, DAO, ORM, Web Context AOP등 이 있다.
      2.                                 ii.         Spring Framework Runtime
        1. 1.      Core container (context, core, beans, Expression Language) + AOP + Instrumentation..
      3.                                iii.         Spring을 이용한 Web Application
        1. 1.      Servlet Container (Tomcat) à Spring core è iBatisà JTM??!!
        2. 2.      생산성 높은 Framework 사용
        3. 3.      단점 : 그것만 사용
  3. 3.     Spring IoC(Basic Concept, Object Control(Container에서 관리하느냐, User가 관리하느냐의 차이로 EJB와 Spring가 나뉜다), Dependency Injection)
    1. A.     Basic Concept
      1.                                  i.         Application vs Web Application
        1. 1.      객체를 프로그래머가 제어할 수 있는가?
        2. 2.      Web Application : Container가 필요
        3. 3.      Application은 프로그램이 그냥 돌아간다.
      2.                                 ii.         Repository
        1. 1.      XML : tag를 이용한 방식
        2. 2.      Properties : ini 파일을 읽고 쓰는 방식
        3. 3.      Spring에서 bean을 관리하는 것(생성, 소멸 등의 관리)은 XML, Property를 통하여 관리한다.
      3.                                iii.         Inversion of Control(IoC) : 메모리에 로드된 메소드를 바꿀 수 있다.?!
        1. 1.      제어의 역행?
        2. 2.      제어권을 가져온다.
        3. 3.      어디서? Container에서..
        4. 4.      무엇을 ? POJOs
      4.                                iv.         Dependency Lookup(DL) : 동적으로 Lookup작업을 해준다. Repository를 만들고à 리소스 등록
        1. 1.      의존성 찾기?
        2. 2.      Repository에 저장된 Bean lookup
        3. 3.      EJB에서 많이 사용하던 방식
        4. 4.      Container와 Coupling이 일어남
          1. A.     A와 B의 프로그램을 실행시키는데 DB 1,,2를 연결해 놓지만. DB3을 연결시켜도 일반적으로는 A또는 B에서 DB3을 연결하지 못한다.
          2. B.      하지만, Lookup을 통하여 동적으로 실행이 가능하다.
      5.                                 v.         Dependency Injection(DI)
        1. 1.      의존성 주입?
        2. 2.      외부의 존재가 생성시점을 제어한다.
        3. 3.      의존성이 객체로 주입
        4. 4.      객체 사이의 의존관계를 객체 자신이 아닌 외부의 조립기가 수행
        5. 5.      무엇을 ? POJO
          1. A.     어떤 시점에 ADD, UPDATE, DELETE를 해라고 XML파일에 적어놓고 프로그램에 올리면 프로그램은 어떤 상황에서 사용을 하게 되면 동적으로 업데이트된 객체를 사용할 수 있다.
          2. B.      왜? 이렇게 사용하느냐? 이렇게 하지 않으면 메모리에 component를 전체를 다 올려야 하기 때문에 프로그램이 무너진다.
          3. C.      따라서 필요시점에 component를 메모리에 올리고 사용이 완료되면 메모리에서 내리는 방식을 사용함으로써 lightweight container라 한다. (IoC 기법)
          4. 6.      Setter Injection : public method(DLImpl dl) à Spring이 값을 넣어준다.
          5. 7.      Constructor Injection
          6. 8.      Method Injection
          7. 9.      IOC ->DL
          8. 10.       ->DI -> setter injection, Constructor Injection, Method Injection
  4. 4.     Spring AOP(Basic Concept, Aspect Separation, AOP)
    1. A.     Programming Paradigm
      1.                                  i.         Procedure programming
        1. 1.      C,Pascal, Cobol
      2.                                 ii.         Object Oriented Programming
        1. 1.      JAVA, C++, C#
      3.                                iii.         Declarative Programming
        1. 1.      HTML, XML  à 프로그램을 할 수 있는 언어로 가능
      4.                                iv.         Aspect Oriented Programming è 돋보기가 있는 부분만 자세하게 보이고 나머지는 안보임. // 관점, 시점, (내가 보고 싶은 곳만 보인다)
        1. 1.      JAVA, C#
        2. 2.      Aspect Separation
          1. A.     Resource Layer
          2. B.      Bossiness Layer
          3. C.      Presentation Layer
          4. 3.      Vertical Separation
            1. A.     Model A
            2. B.      Model B
            3. C.      Model C
    2. B.      AOP
      1.                                  i.         Aspect Oriented Programming
      2.                                 ii.         공통의 관심사항을 적용해서 발생하는 의존관계의 복잡성과 코드 중복을 해소해주는 프로그래밍 기법
      3.                               iii.         공통사항과 핵심 로직을 분리
      4.                                iv.         Logging, Exception, Transaction
      5.                                 v.         Advice
        1. 1.      공통사항이 언제 실행되는지 정의
      6.                                vi.         Joinpoint
        1. 1.      Advice를 적용 가능한 시점
      7.                               vii.         PointCut
        1. 1.      JoinPoint의 부분집합
        2. 2.      실제로 Advice가 적용되는 JoinPoint를 나타낸다.
      8.                              viii.         Weaiving
        1. 1.      Advice를 핵심 로직에 적용하는 행위
      9.                                ix.         Aspect
        1. 1.      Advice와 Pointcut을 합쳐서 하나의 Aspect라고 한다.
        2. 2.      여러객체에 공통으로 적용되는 공통 관심사항

*Aspect를 가지고 Weaiving를 한다

  1.                                 x.         Application 이 다양한 관점으로 분해
    1. 1.      핵심 관심사
      1. A.     각모듈에서 수행하여야 하는 기본적이고 대표적인 업무
      2. B.      실제 업무 로직
      3. 2.      횡단 관심사
      4. 3.      여러 개의 모듈에 걸치는 시스템의 부가적인 업무
      5. 4.      로깅 사용자인증, 성능관리 등의 기능
      6. 5.     AOP는 OOP를 대체하는 것이 아니라
      7.                                xi.         업무 로직에서 직접 호출하는 것이 아니라 Aspect를 활용하여 컴파일 시나 런타임시에 Weaving과정을 거쳐 하나의 시스템으로 조립되는 것이 가능하게 해준다.
        1. 1.      클래스(핵심관심사), Aspect(횡단관심사à AOP Weaver à 시스템

 

 

 

 

Transaction :  POJOà Objectàcomponentàjava beans

*JSP : object를 생성 할 수 없기 때문에 Container를 사용하여 Object를 관리 해야 한다.

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.