SpringFramework

김다린·2024년 4월 15일

MVC

목록 보기
3/5

개요


WAS 실행환경으로 Tomcat 을 사용함

WAS(Web Application Server) 서버: JSP, ASP, PHP 등 사용자의 입력을 받아 서버에서 무언가를 처리하고 그 결과를 보여주는 동적인 데이터를 처리하는 웹서버

출처 : https://ithub.tistory.com/101

출처 : https://ithub.tistory.com/101

이미 정의된 beans를 사용하므로 자바 내의 new 라는 키워드가 들어가지 않는게 좋음

EJB → 무겁고 비싸기 때문에 이와 같은 단점을 극복하기 위해 스프링 프레임워크를 사용하게 됨

Spring Web MVC : 관점지향프로그래밍

AOP 기능 : 로그를 찍는 코드를 직접 작성하지 않아도 됨

특징


  1. POJO(Plain Old Java Object) 기반의 프레임워크

    자바 객체의 라이프사이클을 스프링 컨테이너가 직접 관리하며, 스프링 컨테이너로부터 필요한 객체를 얻어올 수 있습니다.

  2. DI(Dependency Injection)을 지원

    각 계층이나 서비스 들 사이 또는 객체들 사이에 의존성이 존재할 경우 스프링 프레임워크가 서로를 연결시켜줍니다. 이는 클래스들 사이에 약한 결합을 가능케 합니다.

  3. AOP(Aspect Oriented Programming)를 지원

    트랜잭션, 로깅, 보안 등 여러 모듈에서 공통적으로 지원하는 기능을 분리하여 사용할 수 있습니다.

  4. 확장성이 높다.

    스프링 프레임워크의 소스는 모두 라이브러리로 분리시켜 놓음으로써 필요한 라이브러리만 가져다 쓸 수 있습니다. 그리고 많은 외부 라이브러리들도 이미 스프링 프레임워크와 연동되고 있습니다.

  5. Model2 방식의 MVC Framework를 지원

이제 다음과 같은 순서로 MVC를 만들게 된다.

라이브러리 의존성 설정파일


Project 아이콘에 빨간색 느낌표가 뜨면 BuildPath 에 실패한것임
BuildPath는 높은 확률로 자바 버전 문제로 다음과 같이 해결하면 된다.

프로젝트에서 마우스 오른쪽 버튼 클릭
Properties → Project Facts → Java 버전 1.8 선택
프로젝트 Build Path에서 JRE Libary 수정

파일이 만들어진 순서대로 Interface, Service, Controller,Main 순으로 작성해준다.


가끔씩 클래스를 잡지 못할 때에는 보통 Maven Dependencies 내의 파일을 잡지 못하는 것임


해당 repository>org>springframework> 내의 파일이 다운받아지다가 인터넷이 잠시 끊겨 제대로 다운받아지지 않은 경우가 있다.

이런 경우에도 겉보기에는 정상적으로 다운받아진것처럼 보이기 때문에 정 안되면 해당 파일들을 삭제시키고 다시 다운받아보는 것도 방법이다.

우리는 객체를 만들어주지 않는다. 다만 bean을 만들어서 new는 spring 에게 관리해주라고 떤져주는것.

스프링프레임워크 프로젝트 과정요약


  1. Spring Lagacy Project가 없거나 Spring Web MVC 이 없는 경우

    Maven Project로 프로젝트를 생성한 후 pom.xml 파일 직접 코딩해야함

  2. Maven Project를 만들고

    자바버전 Project Facets (Java)

    Build Path (JRE)

  3. 자바 클래스들

    인터페이스와 클래스

    IHelloService

    HelloService

    HelloController

    다른 클래스에 의존하는 클래스는 … → 생성자 또는 setter 매서드가 있어야 함

  4. 빈설정 및 의존성 주입을 위한 xml 설정파일

    application-config.xml

  5. Main 만들어 테스트

    context 설정

    context에서 빈을 찾아서 메서드 실행

Constructor based DI

별도로 xml 파일을 사용하지 않고 main 화면에서 직접 remindController가 필요한 곳에서 객체를 만들 때 RemindService 객체를 만들어 전달해 준다.

Setter based DI

RemindController가 필요한 곳에서 객체를 만들고, RemindService 객체를 setter 메서드를 통해 전달함

xml을 이용한 DI < bean > 태그


set 메서드를 사용하면 xml 파일에서는 property 태그를 사용하도록 함

property는 set메서드의 이름을 찾아간다.

profile
한걸음씩 뚜벅뚜벅

0개의 댓글