WebServer/Spring Boot

[스프링부트] SpringBoot 개요

gangintheremark 2023. 9. 22. 10:29
728x90

Java Spring Boot는 Spring으로 애플리케이션을 만들 때, 쉽고 빠르게 만들 수 있도록 도와주는 프레임워크

 

스프링 vs 스프링부트

  Spring 🌱 Spring Boot🌱
정의 Enterprise Application을 개발하는데 사용되는 오픈소스 경량 프레임워크 REST API 개발에 사용되며, 기존의 스프링 프레임워크 위에 구축
중요기능 Dependency Injection Autoconfiguration
사용방식 설정 파일 작성, 빈 객체 등록, 빈 객체 간의 의존성 설정 간단한 설정과 의존성 처리
설정파일 Bean Configuration XML파일 application.properties 또는 application.yml 이용
목적 느슨하게 결합된 응용프로그램 독립 실행형 응용 프로그램
서버 별도의 외장 웹 서버 설치 내장된 서버 존재
의존성 필요한 의존성 각각 추가 여러 의존성을 패키지로 묶은 starter 이용
코드 크기 많은 코드 작성 코드 라인 축소
인메모리
데이터베이스
인메모리 데이터베이스 지원 X 인메모리 데이터베이스 지원 O
배포 war 파일로 빌드하여 배포 독립적으로 실행 가능한 jar 파일로 배포 가능 (war도 가능) ➜ 클라우드 및 도커 같은 가상화환경에 빠르게 배포 가능
mvc 기본화면 JSP 파일 thymeleaf 타임리프 (*.html)
DB연동 commons.dbcp2 라이브러리 사용 HicariCP 라이브러리 사용

 

프로젝트 생성

[New] - [Spring Starter Project]

pom.xml 에서 version 2.4.2 로 변경

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

 

Application.java

@SpringBootApplication 어노테이션을 사용한다. 해당 어노테이션은 다음과 같은 기능을 포함하고 있다.

  • @SpringBootConfiguration : 스프링부트의 자동 설정 메커니즘 활성화
  • @EnableAutoConfiguration : starter와 application.properties 으로 설정 자동화
  • @Component : 자동으로 빈 스캔
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
        XXXService service = ctx.getBean("service", XXXService.class); // 빈 접근
    }
}

 

빈 생성

@SpringBootApplication의 빈 패키지와 같거나 서브패키지는 자동으로 빈으로 등록되어 생성된다.

💡 해당 빈에 @Controller  @Service  @Repository  @Component  @Configuration 설정 필수

다른 패키지의 경우 scanBasePackages 속성 이용

@SpringBootApplication(scanBasePackages = "com.*")
public class Application {
    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
        XXXService service = ctx.getBean("service", XXXService.class); // 빈 접근
    }
}

 

Devtools

스프링 부트는 코드 변경시 서버 리로딩이 자동으로 안된다. 이 때,Devtools의존성을 이용하면 자동으로 리로딩 가능

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>
728x90