IT Developer/Java

Java 기초 <20. Java와 Spring을 함께 사용할 때 유용한 팁 (Spring Boot 연계)>

TEMA_ 2025. 3. 21. 09:17
반응형

자바 Java

20. Java와 Spring을 함께 사용할 때 유용한 팁 (Spring Boot 연계)

 

안녕하세요! 태마입니다.

Java 기초 강좌입니다.

 

강좌의 경우 

1. 주제 간단 정리

2. 상세 주제 정리

으로 이루어져 있습니다.

 

자바 Java

포스팅 시작하겠습니다 :)

1. 주제 간단 정리

 

1. Spring Boot란?

Spring BootSpring 프레임워크를 쉽게 사용할 수 있도록 도와주는 프레임워크입니다.
Spring Boot설정 및 구성이 최소화되어 있으며, 독립 실행형 애플리케이션을 쉽게 만들 수 있습니다.
✔ 기본적으로 내장 서버(Tomcat, Jetty 등)를 제공하여 별도로 서버 설정 없이도 실행할 수 있습니다.

📌 Spring Boot의 주요 특징
자동 설정(Autoconfiguration) : 애플리케이션에 필요한 대부분의 설정을 자동으로 제공
독립 실행형 애플리케이션 : 내장된 서버를 사용하여 별도 서버 설정 없이 실행 가능
Spring Initializr : 프로젝트 초기 설정을 쉽게 생성할 수 있도록 지원
스타터(Starters) : 필요한 기능을 손쉽게 추가할 수 있는 의존성 묶음


 

2. Spring Boot 프로젝트 생성

Spring Initializr를 사용하면 손쉽게 Spring Boot 프로젝트를 생성할 수 있습니다.
Spring Initializr는 웹 기반의 도구로, 필요한 의존성을 선택하여 프로젝트를 초기화할 수 있습니다.

Spring Initializr 사용 방법

  1. Spring Initializr에 접속
  2. 프로젝트 메타데이터 (Group, Artifact 등)를 설정
  3. 의존성을 선택 (예: Spring Web, Spring Data JPA 등)
  4. Generate 버튼을 눌러 프로젝트 다운로드

📌 Spring Initializr를 사용하면 복잡한 설정 없이도 바로 프로젝트를 시작할 수 있습니다.


 

3. Spring Boot의 주요 특징

Spring Boot는 간편한 설정자동화된 설정을 통해 Java 개발자들이 애플리케이션 개발을 더 빠르고 쉽게 할 수 있도록 도와줍니다.

Spring Boot의 주요 구성 요소

  • Application Properties : 애플리케이션의 설정을 다룰 수 있는 파일
  • Controller : 클라이언트의 요청을 처리하는 REST API를 생성
  • Service : 비즈니스 로직을 처리
  • Repository : 데이터베이스와의 상호작용을 처리
  • Entity : 데이터베이스 테이블과 연관된 객체
반응형

2. 상세 주제 정리

 

1. Spring Boot의 기본 구조와 실행

Spring Boot 애플리케이션은 주로 @SpringBootApplication 애노테이션으로 시작합니다.
✔ 이 애노테이션은 **@Configuration, @EnableAutoConfiguration, @ComponentScan**을 조합하여 애플리케이션을 자동으로 설정하고 컴포넌트를 스캔합니다.

Spring Boot 애플리케이션 실행 예제

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

📌 @SpringBootApplication 애노테이션은 Spring Boot 애플리케이션을 초기화하고, 필요한 설정을 자동으로 적용합니다.


 

2. Spring Boot와 REST API

Spring Boot를 사용하여 REST API를 빠르게 만들 수 있습니다.
@RestController@RequestMapping 애노테이션을 사용하여 HTTP 요청을 처리할 수 있습니다.
✔ Spring Boot는 RESTful 웹 서비스를 쉽게 구축할 수 있도록 돕습니다.

Spring Boot REST API 예제

 
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }
}


📌 Spring Boot는 자동으로 JSON 포맷을 처리하여 반환합니다.


 

3. Spring Boot와 데이터베이스 연동 (JPA 사용)

Spring Data JPA를 사용하여 관계형 데이터베이스와 쉽게 연동할 수 있습니다.
✔ **JPA(Java Persistence API)**는 객체와 관계형 데이터베이스를 매핑하는 기술로, 데이터베이스 연동을 간편하게 만들어 줍니다.
✔ Spring Boot는 @Entity, @Repository, @Service 등을 사용하여 JPA 기반 데이터베이스 연동을 지원합니다.

Spring Boot와 JPA 연동 예제

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    private Long id;
    private String name;

    // getters and setters
}

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
    User findByName(String name);
}

📌 @Entity를 사용하여 데이터베이스 테이블과 매핑하고, JpaRepository로 CRUD 작업을 처리합니다.
📌 Spring Boot는 JPA 설정을 자동으로 처리하여, 데이터베이스 연동을 쉽게 합니다.


 

4. Spring Boot에서 테스트하기 (JUnit과 Mockito 연계)

Spring Boot는 JUnitMockito를 사용하여 단위 테스트통합 테스트를 쉽게 할 수 있도록 지원합니다.
@SpringBootTest를 사용하면 Spring 컨텍스트를 로드하여 통합 테스트를 수행할 수 있습니다.
Mockito를 사용하여 서비스나 리포지토리의 의존성을 Mocking할 수 있습니다.

Spring Boot 테스트 예제

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class UserServiceTest {

    @Autowired
    private UserService userService;

    @Test
    public void testFindUser() {
        User user = userService.findByName("John");
        assertNotNull(user);
    }
}

📌 @SpringBootTest를 사용하여 애플리케이션의 전체 컨텍스트를 로드하고, @Autowired를 사용하여 의존성 주입을 받을 수 있습니다.
📌 Mockito와 함께 사용하여 외부 의존성을 Mocking하여 테스트를 더 독립적이고 효율적으로 만들 수 있습니다.


 

5. Spring Boot와 보안 (Spring Security 연계)

Spring Security웹 애플리케이션의 보안을 담당하는 프레임워크로, 인증과 권한 부여 기능을 제공합니다.
✔ **@EnableWebSecurity**와 **WebSecurityConfigurerAdapter**를 사용하여 Spring Security를 설정할 수 있습니다.
✔ Spring Boot와 Spring Security를 함께 사용하면 간단하게 인증 및 권한 부여 기능을 추가할 수 있습니다.

Spring Security 설정 예제

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .antMatchers("/user/**").hasRole("USER")
            .anyRequest().authenticated()
            .and().formLogin();
    }
}

📌 @EnableWebSecurity와 WebSecurityConfigurerAdapter를 사용하여 인증 및 권한 부여 설정


지금까지 Spring Boot와 Java 연계 방법에 대해 배웠어요!

반응형