2018년 11월 26일 월요일

자바 스프링 프레임워크

스프링 프레임워크

자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케션 프레임워크

DI

의존성 주입 ( 클래스에 다른 객체를 만들지말고 생성자로 입력 받음 )
의존성 내용을 xml에 저장하고 자바에서는 xml를 파싱함
      • 생성자를 이용한 의존성 삽입
        • 필요한 의존성을 모두 포함하는 클래스의 생성자를 만들고 그 생성자를 통해 의존성 주입
        • 생성자에 파라미터를 만들어 주고 이를 통해 DI 컨테이너가 의존할 오브젝트 레퍼런스를 넘겨주는 방식
                                     
      • setter() 메소드를 이용한 의존성 삽입
        • 의존성을 입력받는 setter 메소드를 만들고 이를 통해 의존성을 주입
        • Spring에서 지지하는 DI 방식
                                    


출처: http://jinpyo900.tistory.com/55 [Computer Science ]

IOC

제어역전, 작은 부품부터 큰 부품으로 만듬 ( 작은 부품으로 조립함 )

AOP

관점 지향 프로그래밍 ( 객체 결합도를 낮춤 )


Spring MVC

  • 일반적인 MVC 구조와 Spring MVC 구조는 다르다 ==> DispatcherServlet
  • Spring MVC는 DispatcherServlet 등장으로 web.xml의 역할이 축소
    • DispatcherServlet이 해당 어플리케이션으로 들어오는 요청을 모두 핸들링하기 때문
  • DispatcherServlet을 이용한다는 것은 Spring에서 제공하는 @MVC를 이용하겠다는 뜻
    • Model, View, Controller 설계영역을 노골적으로 분할하여 사용자가 무조건 MVC로 어플리케이션을 설계하게 끔 유도
    • @MVC라는 이름 하에 DispatcherServlet 클래스를 web.xml에 등록하는 방식으로 사용
      • @MVC는 설계 자체를 model1 방식으로 할 수 없게 만드는 데다, model2 방식을 쉽게 만들 수 있도록 환경 구성
               
    • 1. 처리요청 (URL)
      • 클라이언트가 해당 어플리케이션에 접근하면, 접근한 URL 요청을 DispatcherServlet이 가로챔
      • web.xml에 등록된 DispatcherServlet의 <url-pattern>이 ‘/‘와 같이 해당 어플리케이션의 모든 URL로 등록되어 있기 대문에 요청을 가로챌 수 있다
    • 2. 요청 URL과 매핑되는 Controller 검색
      • 가로챈 정보를 HandlerMapping에게 보내 해당 요청을 처리할 수 있는 Controller를 찾아냄
    • 3. 처리요청
      • HandlerMapping이 해당 요청을 처리할 Controller를 찾아냈다면, 요청을 Controller에게 보내줌
      • 이 Controller는 사용자가 직접 구현해 주는 부분
    • 4. ModelAndView 리턴
      • 해당 요청을 처리한 후, Controller는 요청을 응답받을 View의 이름을 리턴
    • 5. ViewResolver
      • 4번에서 View의 이름을 리턴할 때, View 이름을 ViewResolver가 먼저 받아 해당하는 View가 존재하는지 검색
    • 6. 응답출력
      • 해당 View가 있다면 처리 결과를 View에게 보냄
    • 이후
      • 이 결과를 다시 DispatcherServlet에 보낸 후, DispatcherServlet은 최종 결과를 Client에 전송


출처: http://jinpyo900.tistory.com/55 [Computer Science ]



SOLID 법칙




  • SRP - 단일 책임의 원칙 (Single Responsibility Principle)
    • 작성된 클래스는 하나의 기능만 가지며 클래스가 제공하는 모든 서비스는 그 하나의 책임을 수행하는 데 집중되어 있어야 한다.
    • 즉, 어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 하나뿐 이어야 한다
  • OCP - 개방 폐쇠의 원칙 (Open Close Principle)
    • 변경을 위한 비용은 가능한 줄이고, 확장을 위한 비용은 가능한 극대화
    • 요구사항의 변경이나 추가사항이 발생하더라도, 기존 구성요소는 수정이 일어나지 말아야 하며, 기존 구성요소를 쉽게 확장해서 재사용할 수 있어야 한다
    • OCP를 가능케 하는 중요 메커니즘은 추상화와 다형성
  • LSP - 리스코브 치환의 원칙 (The Leskov Substitution Principle)
    • 서브 타입은 언제나 기반 타입과 호환될 수 있어야 한다
  • ISP - 인터페이스 분리의 원칙 (Interface Segregation Principle)
    • 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아햐 한다는 원리
    • 즉, 어떤 클래스가 다른 클래스에 종속될 때에 가능한 최소한의 인터페이스만을 사용
  • DIP - 의존성 역전의 원칙 (Dependency Inversion Principle)
    • Inversion of Control


  • 출처: http://jinpyo900.tistory.com/55 [Computer Science ]



    11/28
    스프링 세팅 완료... 이클립스에서 진행하려다가 실패해서
    STS 새로 깔고 했더니 됨.
    역시 환경세팅이 제일 어렵다.
    https://hanazuou.tistory.com/158?category=695437



    http://all-record.tistory.com/175

    junit 

    자바에서 테스트를 도와주는 프레임워크
    스프링에서 초기에 DB,myBatis를 연결할 때 테스트하기 위해 사용

    myBatis 

    JDBC 작업시 반복되는 코드를 줄이고 SQL문을 처리하기 위함

    스프링 패키지 설명

    VO - 데이터를 저장할 폼 (빈)
    DAO - 데이터를 실제로 처리함
    Service - 컨트롤러에서 넘겨 받아 DAO로 알맞게 전달
    Controller - 사용자의 요청에 맞게 Service를 실행
    mapper.xml - myBatis에 SQL 쿼리를 매핑함
    myBatis-config.xml - 기본 설정, VO 설정
    root-context.xml - DB,mybatis 기본 설정, mapper 위치 설정, sqlSession 설정
    sqlSession - 트랜잭션 관리함 , 개발자가 직접 DB연결, 종료를 관리할 필요가 없음















    flutter 기본 개념 1

      Scaffold  - 화면 뼈대 역할  - 기본적으로 AppBar body floatingActionButton 같은걸 배치해줌  return Scaffold (       appBar : AppBar ( title : const Text ...