백엔드 10일차 - 스프링부트 : 환경 설정 및 기초

parang·2025년 4월 21일

LG CNS AM Inspire Camp 2기

목록 보기
21/50
post-thumbnail

백엔드 서버란?

백엔드 서버는 WAS로 이루어져 있다. WAS는 JSP, Servlet 같은 동적 웹 애플리케이션을 실행하는 서버이다. Tomcat은 대표적인 자바 기반 WAS이고, 스프링부트는 톰캣이 내장되어 있어 바로 실행이 가능하다.

일단, 보통 웹에서 요청을 하는 순서는 아래와 같다.

클라이언트 -> (요청) 백엔드 서버 -> DB서버 -> (응답) 백엔드 서버 -> (응답) 클라이언트

이렇게 사이클이 돌게 된다.

결론

백엔드 서버는 클라이언트의 요청을 받고, DB와의 연동을 통해 응답하는 역할을 한다고 보면 된다.

프로젝트 생성

나는 maven 프로젝트, 자바, mariaDB를 사용할 것이다.

1. VScode 준비.

2. 플러그인 설치

설치하는 플러그인은, Extension pack for java, Spring 관련 2개, lombok 플러그인 1개이다.

3. 프로젝트 생성

ctrl + shift + P 를 누르면 command Palette 가 나오게 되는데, 여기서 create a maven project. 누르고, 자바 버전이나 id 설정은 기호에 맞게 확인을 누르면 되고, 패키징 타입은 jar를 선택해준다.

여기서 주의 : 자바 버전이 17 밑이면 스프링부트가 실행이 안된다고 하니 주의해야한다.

4. Dependencies

  • spring Web Web
  • Thymeleaf Template Engines
  • spring data jpa
  • mariaDB driver
    를 선택해서 추가해준다.

maven프로젝트를 생성하게 되면, pom.xmlapplication.properties이 같이 생성되게 된다. 여기서 Dependencies들은 모두 pom으로 들어간다. pom으로 들어가서 마우스 오른쪽 버튼을 눌러 add starter를 통해 추가가 가능하다.

여기서 또 주의할 점은,

<dependencies>
</dependencies>

이 코드는 바깥쪽에 1번만 감싸주어야 해서, 새로 생성되는 건 이건 지워주고 안에 것만 따로 옮겨주는 수작업(..) 을 해 주어야 한다.

5. MariaDB 연동

디펜던시를 일단 추가를 하고,

application.properties에 들어간 후

spring.datasource.url=jdbc:mariadb://localhost:3306/사용할 데이터베이스이름?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.username=이름
spring.datasource.password=비밀번호
spring.jpa.database-platform=org.hibernate.dialect.MariaDBDialect

이 코드를 꼭 추가해야 드라이버를 인식하게 된다.

주의할 점 : 문장 끝에 띄어쓰기가 들어가면 오류가 발생하므로 꼭 체크!

스프링이란?

자바 언어를 기반으로 한 웹 애플리케이션을 개발하기 위한 프레임워크

  • 스프링의 가장 큰 특징으로는 IOC, DI, Bean이 있다.

DI

  • DI는 의존성 주입이라고 하며, 스프링 컨테이너가 객체를 생성하고@Autowired등을 통해서 주입해주는 방식이다. 자바에서 처럼 new를 이용해 객체를 일일이 생성하지 않아도 된다!

IoC

  • IoC(제어의 역전) 방식은, 객체 생성과 제어의 흐름이 DI와 같은 과정을 통해서 주도권이 스프링 프레임워크에 있다는 의미이다. (DI는 IoC의 대표적인 구현 방식)

결론은 자바에서는 new 키워드로 객체를 직접 생성하고 의존성을 하나하나 설정했다면, 스프링부트에서는 필요한 설정만 해두면 객체 생성과 주입을 스프링이 알아서 처리해준다는 뜻이다!

Bean

스프링에서는 객체를 스프링 컨테이너가 관리할 수 있도록 등록한 것을 Bean이라고 한다. 모든 형태를 Bean으로 만들어서 사용하고, 쉽게 생각하면 스프링이 관리해주는 객체라고 보면 된다.

  • Bean 형식으로 존재하고 있어야 DI등을 통해 다른 객체와 연결해서 사용가능하다.

🛠 Bean 만드는 방법

  1. @Configuration + @Bean
@Configuration
public class BeanConfig {
	@Bean
    public Game game() {
        return new Game();
    }
    @Bean
    public String bean1() {
        return "Bean1";
    }
------------------------------------------------------------
@Controller 
public class MyController {

 @Autowired String bean1; 
 @Autowired Game game;
 
 public String run() {
      System.out.println(bean1);
      System.out.println(game.play());
 }

이런식으로, config쪽에서 빈을 생성한 후, controller쪽에서 @Autowired를 통해 사용 가능하다. 이때 Game은 클래스가 따로 존재한다.

  1. 어노테이션 사용 @Component @Controller @Service @Repository
    이 방법은 클래스 위쪽에 어노테이션을 붙이면 스프링이 자동으로 등록해주는 방식이다.

요약하자면, 직접 만들 때는 1번 방식을, 자동으로 등록하고 싶을 땐 2번 방식을 활용하면 된다.

MVC

MVC란 Model, View, Controller의 약자이고, 역할별로 분리해서 개발할 수 있도록 하는 구조적 개념이다.

Annotation

@Controller @RestController -> 손님 맞이 역할을 하며 둘 중에 하나는 꼭 있어야 스프링이 동작한다.
@GetMapping @PostMapping-> HTTP 요청(GET/POST)을 메서드에 매핑
@RequestMapping-> URL 전체에 대한 요청 매핑.
@RequestParam @PathVariable -> 요청 파라미터를 메서드 파라미터로 바인딩
@ResponseBody -> 반환 값을 View가 아닌 응답 본문으로 처리 (주로 JSON)

@RestController
public class MainController {

    @GetMapping("/board")
    public String board(@RequestParam String num
    ,@RequestParam String name) {
        return "게시물번호 => " + num
         + " " + "이름 => " + name;
    }
    
    주소창에 /borad?num=1&&name=안녕 반가워! <-이런식으로 작성

스프링부트를 제대로 접한 것은 오늘이 처음인데 개념잡기가 꽤 까다로워서 꾸준히 복습을 해야겠다고 느낀 하루였다. 더 잘하고 싶은 이 마음... 반복 밖에 없겠지?

profile
파랑입니다.

0개의 댓글