ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [spring] spring이 뭔데?
    spring 2023. 11. 20. 16:18

    스프링과 스프링 MVC

    스프링을 왜 사용하는가?

    ⇒ 자바는 웹 개발할때 한 클래스안에서 수직적인 흐름만 제어할 수 있는 반면, 스프링은 특정 클래스에 대한 수평적 처리까지 가능하다. 의존성 주입, AOP 와 같은 기능 뿐만 아니라 웹 MVC 프레임워크도 함께 제공하는, 자바 프레임워크이다.

     

    비즈니스 로직?

    ⇒ 업무에 필요한 데이터를 처리하는 애플리케이션의 일부를 의미한다. 이것은 데이터 입력, 수정 ,조회, 보고서 처리 등을 수행하는 루틴, 즉 보이지 않는 곳에서 일어나는 각종 처리를 의미한다.

     

    의존성 주입

    ⇒ 의존성 주입이란 객체 간 관계를 관리할때 사용하는 기법으로, 객체 또는 구성요소 사이 의존관계를 직접 생성하거나 제어하는것이 아니라 외부의 bean 설정 파일을 활용하여 스프링 컨테이너가 자동으로 연결하는 방식이다.

    의존성 주입 방법에는 크게 생성자 의존성 주입과, Setter 메소드 의존성 주입이 있다.

    public class A {
    	private B b;
    	public A (B b){
    			this.b = b;
    	 }
    }
    
    public class A {
    	private B b;
    	public void setB(B b){
    		 this.b = b;
    }
    }
    

     

    생성자 주입을 사용하라! 생성자 주입의 장점

    불변 : 생성자 주입은 객체를 생성할때 딱 1번만 호출되므로 이후에 호출되는일이 없어 의존 관계 불변 유지가 가능하다. (만약 수정자 주입을 사용하려면 setXXX 메소드를 public으로 열어두어야 해서 이를 누군가 실수를 변경할 수 도 있다,)

    누락 : 생성자 주입을 사용하면, 주입 데이터가 누락되었을때 바로 컴파일 오류가 발생하여 바로 체크가 가능하다,

    final : 생성자 주입을 사용하면 필드에 final키워드를 사용할 수가 있어, 혹시라도 값이 설정되지 않는 오류를 컴파일 시점에 막아준다.

     

    AOP

    애플리케이션 대부분은 특정 기능을 책임지는 모듈 여러 개로 구성된다. 하지만 각 모듈은 대체로 자신의 핵심 기능 외에도 로깅이나, 트랜잭션 관리, 보안 등 시스템 서비스를 수행해야 하는 경우가 많다.

    이런 시스템 서비스는 공통 관심사라고 한다. 애플리케이션 내부에서 공통 관심사를 비즈니스 로직으로 분리하고, 효과적으로 애플리케이션에 삽입하는 기술이 AOP 이다.

    ⇒ 즉 핵심적인 기능에서 부가적인 공통 관심사를 분리하여 Aspect라는 독특한 공통모듈을 만들어 설계하고 개발하는 방법이다. 핵심 키워드 : 공통 모듈

     

    트랜잭션

    DB를 사용할때 가장 신경써야할 부분은 한 업무를 여러 작업으로 진행할 때의 트랜잭션 처리이다,

    • 트랜잭션이란?데이터 무결성과 일관성을 보장하는 필수 기법
    • 어떤 작업 프로세스를 하나로 묶어 실행하다 , 작업이 하나라도 실패하면 모두 실패처리하고, 전체 작업이 성공하면 성공으로 처리하는 작업 묶음
    • 쪼갤 수 없는 최소 단위의 작업.

    스프링은 DB 연동기술과 트랜잭션 서비스 사이 종속성을 제거하고, 트랜잭션을 처리하는 일관된 방법을 제공한다.

    선호하는 트랜잭션 방법은 코드를 수정하지 않고도 트랜잭션을 적용하거나 변경할 수 있는 선언적 트랜잭션 관리이다.

     

    스프링 MVC

    Model - View - Controller

    model : 애플리케이션 데이터가 들어 있는 객체

    view : 모델의 정보를 특정 형식으로 보여줌. 결과화면 생성

    controller : 비즈니스 로직, 응답 결과에서 보여 줄 데이터를 모델에 담아 전달한다.

    front controller : 애플리케이션의 흐름 관리, 스프링 MVC에서 DispatcherServlet클래스가 프론트 컨트롤러로 작동함.

     

    DispatcherServlet

    스프링 MVC는 웹 브라우저에서 서버로 들어오는 모든 웹 요청을 받아 처리하고 ,결과를 되돌려주기까지 DispatcherServlet의 도움을 받는다. 디스패처 서블릿은 웹 애플리케이션으로 들어오는 모든 요청을 제어하고 모델 - 뷰 - 컨트롤러를 조합하여 웹 브라우저에 출력하는 클래스로 스프링 MVC의 대표적인 구성 요소이다.

    ⇒ 웹에서 요청을 전달받고, 전달받은 요청을 컨트롤러에 전달하고, 컨트롤러가 반환한 결과 값을 뷰에 전달하여 알맞은 응답을 생성한다. 이때 결과값은 모델에 들어있다.

     

    viewResolver

    컨트롤러의 처리 결과를 보여 줄 뷰를 결정한다.

     

    HandlerMapping

    클라이언트가 요청한 URL을 어떤 컨트롤러가 처리할지 결정한다.

     

    'spring' 카테고리의 다른 글

    [spring] 회원 도메인 설계하기  (3) 2023.09.24

    댓글

lee-ding