본문 바로가기
programming/web

스프링 프레임워크

by 힐무새 2017. 5. 31.

Spring??



  • Rod Johnson이 만든 오픈소스 프레임워크
  • 복잡한 엔터프라이즈 애플리케이션 개발을 겨냥하였음
  • 단순성, 테스트 용이성, 느슨한 결합성의 측명이 스프링의 이점을 제시하고 있음
경량화된 제어 역행(DI)과 관점지향(AOP) 컨테이너를 구성되어 있는 프레임워크


스프링 모듈

  • core
    • 프레임워크에서 가장 기본적인 부분이고, 의존성 삽입(Dependency Injecton) 기능을 제공한다.
  • DAO
    • jdbc 코딩과 데이터베이스 업체별 특정 처리할 필요가 없는 jdbc 추상화 레이어를 제공
  • ORM
    • 객체 관계 매핑 API를 위한 통합 레이어를 제공
      Mybatis를 활용해서 DB 처리를 효율화 한다.
  • Web
    • 화면 View 뿐만 아니라, 웹에서 파일 업로드, 다운로드
  • MVC
    • 웹 애플리케이션의 모델 2 패턴을 스프링에서 지원


spring MVC

  • dispatcher.xml에서 controller 등록
  • controller
    • 스프링의 공통 servlet인 DispatcherServlet의 다음 단계의 내용을 처리..
    • 요청된 내용을 받고, model 단으로 요청 처리에 필요한 business logic을 처리
      Service, DAO
    • view 단에 넘겨줄 model


web.xml 설정

  • url을 통해서 웹서버를 호출할 때 가장 먼저 호출되는 곳
    • http://localhost:8080/springweb
  • front단 controller 선언(DispatcherServlet)
    • 공통적으로 스프링에서 지원하는 servlet을 선언합니다
    • 어떤 url 패턴으로 스프링의 servlet이 호출되는지도 선언합니다
      -  *.do ==> 스프링에서 사용하는 servlet을 선언
      -  default 스프링 컨테이너 설정파일
          <servlet-name>으로 설정한 이름 dispatcher.xml
  • 스프링에서 지원하는 한글 encodingFilter 선언(CharacterEncodingFilter)

DI(Dependency Injection)

  • 의존 주입
  • 조립기를 사용하여, 기존 클래스에 영향이 없이 서로 간에 type을 확인하여 해당 객체를 삽입하는 code 처리 방식을 말한다.

spring 조립기

  • dispatcher-servlet.xml에서 정의된 클래스는 WAS 로딩 시, 사용자 정의 클래스나 프레임웍 기반을 클래스가 실제 객체가 메모리에 로딩하는 처리
  • 조립기에 객체 생성으로 할당 하기에, 실제 클래스 코드에서는 new XXX 코드가 사라지게 된다.

조립기에서 클래스 선언, 데이터 할당

  • 객체 생성
    - Person p= new Person();
    - p.setName("홍길동");
  • 조립기
    - < bean id= "p" class = "패키지명...Person" />
        - < property name = "name" value = "홍길동" />
        - < property name = "age" value= "25" />
    </bean>

컨테이너 내용 확인

  • xml 로딩
    - Resource rs = new ClassPathResource("경로/diexp01.xml");
  • xml에 있는 bean을 호출..
    - BeanFactory: bean 객체 호출
    - XmlBeanFactory: Resource에 있는 xml bean 객체 호출
        - .getBean("xml에 선언된 id")
        - Person p= (Person)bean.getBean("p");
        - p.getName(), p.getAge()

생성자를 통한 할당

  • DTO: 생성자를 통하여 데이터를 할당 할 수 있도록 선언
        - Person(String name, int age)
  • xml bean 선언

          

객체에 객체 할당 처리..

  • 클래스 선언
  • 조립기(Container) 처리

type casting 없이 bean 활용

  • main()

1:N에 대한 조립기 처리

  • DTO

Controller를 통한 요청 처리

  • 요청
    - http://localhost:8080/springweb/callctrl.do
  • 자바 Controller

요청 처리를 해주는 여러 객체들

  • public String call(@@@, Model d) { }
    1. 클래스 선언
      Member m : ?id=himan&pass=7777
    2. 한개 단위 입력값 처리
      @RequestParam(value="id", defaultValue="")
      - value: query string key를 지칭
      - defaultValue: 실제 string key가 없거나, 데이터를 할당하지 않은 경우 초기치 설정
          - start.do?XXXX

get/post 처리

  • Controller에 공통 RequestMapping annotation 설정, get/post 방식 처리
  • @RequestMapping( value = "요청 주소", method=RequestMethod.GET)
    - 해당 요청 주소로 get방식을 처리했을 때
  • @RequestMapping( value = "요청주소", method=RequestMethod.POST)
    - 해당 요청 주소로 post 방식을 처리 했을 때

@ModelAttribute

  • 요청 처리 객체의 내용을 모델로 데이터를 넘길 때, 요청 + model 기능을 하는 객체를 말한다.
  • 해당 클래스를 controller에서 공통으로 활용할 수 있다.
  • Controller
    @ModelAttribute("모델이름선언")
    public Product getProduct(){
    return new Product();
    }


'programming > web' 카테고리의 다른 글

[spring]ViewResolver  (0) 2017.06.07
[spring]ModelAndView, redirect, forward, session  (0) 2017.06.07
AJAX  (0) 2017.05.30
커넥션 풀(connection pool)  (0) 2017.05.29
[jsp] 쿠키  (0) 2017.05.25