ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring boot] 스프링 부트 정리
    SpringBoot 2021. 9. 16. 17:06
    반응형

    폴더구조

     

    스프링으로 웹 프로젝트는 2가지로 나눌 수 있다.

     Spring Starter Project

    Spring Boot를 이용하는 프로젝트 
    스프링 부트는 그 목적 자체가 최대한 간단하게 실행하고, 배포가 가능한 수준의 웹 어플리케이션을 제작하는 것
    개발에 필요한 모든 환경 설정을 맞춰주고, 최소한의 개발을 해야 하는 경우 사용하는 것이 좋다.

     


    Spring Legacy Project

    스프링 템플릿 프로젝트를 이용하는 프로젝트
    AWS를 사용하거나, 모델2 방식에 대한 이해가 있다면 해당 프로젝트를 사용하는 것이 좋다.
    또한, 조금 복잡 하기는 하나 실제 개발 업무에서 많이 사용하는 방식이다. 
    AWS 또는 기타 설정을 직접 해야 하기 때문에 초기 세팅에 대한 공부가 필요하다.

     

     

    pom.xml
    스프링부트는 jsp 페이지를 로딩하는 기능을 제공하지 않기때문에 라이브러리애 추가해준다.
    또한 jstl이나 json을 사용 시 필요한 jackson도 기본으로 설정해주는게 편하다 
    java.servlet, org.apache.tomcat.embed, org.codegaus.jackson


    application.properties 
    WAS, DB 등의 설정을 key-value 형식으로 처리 가능한 파일, 
    pom.xml 설정까지 완료하면 jsp 페이지가 있는 곳의 위치를 정의해주어야 한다
    preefix, suffix를 이용하여 jsp 페이지 설정 등록을 해준다. 이 properties파일은 추후 DB 설정 
    이라던지 security 설정 등 중요한 정보들이 작성되는 중요한 파일이다.

     

     

    src/main/java

    클래스 파일을 모아두는 곳

     


    src/main/resource

    xml, properties를 저장하는 곳 , static, template, application.properties 파일
    (3개가 생성되어져 있다.  XML, properties static 파일을 모아둔 디렉토리)

     


    static

    css, js, html 파일 

     


    template

    부트에서 이용하는 thymeleaf 형식 템플릿 파일 (jsp아님) 을 저장한다

    JSP와 Thymeleaf의 가장 큰 차이점은 JSP와 달리 Servlet Code로 변환되지 않다는 점이다. 따라서 비즈니스 로직과 분리되어 오로지 View에 집중할 수 있다.

     

     

     

     web.xml
    해당 프로젝트를 실행하는 Tomcat이 프로젝트를 실행할 때 접근하는 파일
    클라이언트의 모든 Request를 처리하는 데 중심적인 역할을 수행하는 Dispatcher Servlet에 대한 정보가 있음
    Tomcat이 해당 파일의 정보를 통하여 필요한 여러 설정파일들을 로딩하여 프로젝트를 실행

     

     


    servlet-context.xml
    Handler Mapping 작업과 관련된 정보를 가지고 있는 파일
    View Resolver에 대한 정보를 담고 있음
    JSP 파일들의 위치를 지정(Prefix)
    .jsp를 뒤에 붙여서 jsp 파일을 호출하도록 함

    url과 관련된 controller나, @(어노테이션), ViewResolver, Interceptor, MultipartResolver 등의 설정해준다

     

     

     

    root-context.xml
    servlet-context.xml 파일과 달리 view와 관련되지 않은 객체를 정의
    비즈니스 로직과 관련된 설정을 수행해주는 파일
    .

    따라서 Service, Repository(DAO), DB 비즈니스 로직 과 관련된 설정을 해준다.

     

     

     

    Component-scan

    스프링에서 위의 이미지와 같은 어노테이션을 클래스에 함께 선언하게 되면 스프링이 자동으로 해당 어노테이션이 붙은 클래스들을 스캔하여 bean으로서 생성해주는 것을 가능하게 해주는 설정이다. 이는 기존의 XML에 장황하게 bean을 생성하기 위한 설정을 작성하는 과정을 드라마틱하게 줄여주는 방법이라 할 수 있다. 

     

    <context:component-scan base-package="패키지명"/>

     

     

     

     


    어노테이션

     

    @SpringApplication.run 

    웹 어플리케이션을 실행하는 역할


    @SpringBootApplication

    다음 세가지 어노테이션으로 구성 


      @EnableAutoConfiguration

    스프링 부트 개발에 필요한 몇 가지 필수적인 설정들이 
       자동으로 완료되도록 도와준다
    @ComponentScan

    자동으로 컴포넌트 클래스를 검색하고 컨텍스트(ioc 컨테이너)에  
        Bean으로 등록 => 의존성 주입이 간편해진다.
      @Configuration

    기존 XML에서 JAVA 기반 설정을 가능하게 함

     

    @SpringBootApplication

    @Configuration + @EnableAutoConfiguration + @ComponentScan 합친거

     

     


    그외 잡다한 것

     

    1. 스프링 생성시 war로 생성하면 ServletInitializer.java가 생성, (jar의 경우 없음)

     

    2. 컨트롤러 생성시 패키지를 만들 때 @SpringBootApplication 이 설정된 패키지 하위로 생성해야 스캔한다.
    하위로 두지 않고 사용할 경우, 컴포넌트 스캔을 별도로 설정해야 한다.

     

    예 )   @SpringBootApplication 의 패키지가 com.web 일경우, 

    나머지com.web.service , com.web.controller 이런식으로 작성해야 함

     

    3. JSP 생성시 /src/main/webapp/WEB-INF/jsp(폴더이름)/파일이름.jsp 

     

    4.  스프링부트는 프로젝트 생성시 내장 서블릿 컨테이너인 톰캣이 자동적으로 설정되기 때문에 jsp를 servlet으로 
    변환하는 tomcat-embed-jasper 를 pom.xml에 추가한다.

     

    5. 스프링을 실행하면, web.xml 을 가장 먼저 읽는다. 스프링에서 루트는 webapp이다 ( jsp 의 webContent와 같다.)

     

     

     

     

     

     

    반응형

    'SpringBoot' 카테고리의 다른 글

    [Spring boot] 어노테이션 정리  (0) 2022.05.17
    [Spring boot] @Scheduled 스케쥴 어노테이션 사용  (0) 2022.04.20

    댓글

Designed by Tistory.