오봉이와 함께하는 개발 블로그

Spring - SpringBoot 기초 본문

BE/Spring

Spring - SpringBoot 기초

오봉봉이 2022. 1. 12. 13:15
728x90

스프링 부트(Spring Boot)

  • 스프링 프레임워크를 사용하는 프로젝트를 아주 간편하게 설정할 수 있는 스프링 프레임워크의 서브 프로젝트
    • 톰캣 설치 등 여러가지 복잡한 설정하지 않아도 된다.
  • 특징
    • XML 기반 설정 과정 없이 간단히 프로젝트를 시작할 수 있음
    • Maven의 pom.xml 파일에 의존성 라이브러리의 버전을 지정하지 않아도 된다.(스프링 부트가 권장 버전 관리)
    • 단독 실행되는 스프링 애플리케이션 구현 가능
    • 프로젝트 환경 구축에 필요한 서버 외적인 툴 내장되어 있어 별도 설치 필요 없음

사용할 스프링 부트 프로젝트

정보

  • Maven
  • Java 11
  • 2.6.2
  • Group : com.multi
  • Artifact : boot002
  • name : boot002
  • Package Name : com.multi.boot002
  • Packaging : War
  • Dependency
    • JDBC API
    • MySQL Driver
    • Spring Web
    • MyBatis Framework

프로젝트 구조

application.properties

server.port=8080
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springDB
spring.datasource.username=root
spring.datasource.password=1234

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

# xml-location
mybatis.mapper-locations=classpath:mappers/**/*.xml

pom.xml

  • 아래의 내용 추가
<!--    JSP 사용 위해 의존성 추가    -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
<!--    lombok     -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

mapper 수정

  • mapper namespace 경로를 바꿔야 한다.
<mapper namespace="com.multi.product.IProductDAO">
<!-- 이하 경로 모두 변경 -->

패키지명Application.java

// 컨트롤러 빈 추가
@ComponentScan(basePackageClasses = ProductController.class)
// mapper 빈 추가
@MapperScan(basePackageClasses = IProductDAO.class)

스프링 부트 프로젝트 생성 시 자동 생성되는 파일

  • Myboot01Application.java
    • @SpringBootApplication
      • 스프링 부트 애플리케이션으로 설정하는 어노테이션
    • main() 메소드 : 스프링 부트 생성 시 자동으로 생성
      • 스프링 부트 프로젝트는 반드시 main()이 있어야 함
      • main()을 포함하는 java 파일이 있어야 함
        • 스프링 부트 애플리케이션을 일반 자바 애플리케이션처럼 개발하려는 의도 때문
  • ServletInitializer.java
    • SpringBootServletInitializer 클래스로부터 상속 받음
    • SpringBootServletInitializer의 역할
      • 스프링 부트 애플리케이션을 web.xml 없이 톰캣에서 실행하게 해줌
        • 스프링 부트에는 web.xml, context.xml 설정 파일이 없음

Spring Boot가 Spring Legacy(MVC 등)와 다른점

  • pom.xml에서 스프링 프레임워크 버전 자동 설정
  • 프로젝트 생성 시 dependencies 선택해서 pom.xml에 자동 삽입
  • src/main/java에 패키지이름Application.java 메인 메소가 있다.
    • 이 클래스 실행 시 스프링 부트 시작
  • tomcat 서버 자동 시작
    • 포트 충돌 시 오류 가능성 있음
  • .jsp 파일을 기본 view로 하지 않으므로 추가 설정 필요
  • src/main/resources 폴더 하위의 static 폴더에 리소스 파일 등 저장
    • image, js, css 등
  • src/main/resources 폴더 하위의 templates 폴더에 템플릿 파일(jsp 파일 외) 저장
    • html
  • src/main/resources 폴더 하위에 자동 생성되는 application.properties
    • web.xml 등을 대신하는 설정 파일

스프링 부트에서 프로젝트 외부 경로 지정

  • 패키지에 WebConfig.java 클래스 생성
  • @Configration
    • WebMvcConfigurer 인터페이스 구현
    • 외부 경로 지정
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // "/prdImages/**" prdImages로 들어오면 file:////Users/gobyeongchae/Desktop/productImages/해당 경로에 들어가서 image 인식
        registry.addResourceHandler("/prdImages/**")
                .addResourceLocations("file:////Users/gobyeongchae/Desktop/productImages/");
    }
}
728x90
Comments