본문 바로가기
프레임워크/Spring

[Spring] 일반적인 스프링 프로젝트 세트

by 클레어몬트 2025. 3. 19.

개발자들에게 봄이 왔으면~

 

하나의 서비스를 제공하기 위해 여러 스프링 관련 프로젝트를 엮어 사용한다!

보통 5가지의 프로젝트를 사용한다

 

 

1. 웹 애플리케이션 서버 개발: Spring Boot

내장 웹 서버(예: Tomcat, Jetty)를 제공하여 별도의 WAS(Web Application Server) 설정 없이 애플리케이션을 실행할 수 있다!

"Spring MVC 기반의 웹 애플리케이션"을 쉽게 개발 가능

+ application.properties or application.yml을 활용한 직관적인 설정

+ 자동 설정(Auto Configuration) 기능으로 개발 편의성 증가

 

보통 선택하는 의존성(dependencies)들로는 다음과 같다

- Spring Web
- Spring Data JPA
- Spring Configuration Processor
- Lombok
- H2 Database

 

📌 예제 코드

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

 

위 코드를 실행하면 내장된 Tomcat 서버와 함께 애플리케이션이 동작하게 된다!

누군가에게는 매우 익숙한 코드일 것이다 ;)

 

 

2. 클라우드 및 마이크로서비스 컴포넌트 개발: Spring Cloud

✅ 주요 기능

  • 서비스 디스커버리: Eureka, Consul 등을 이용한 서비스 등록 및 검색
  • API Gateway: Spring Cloud Gateway, Zuul을 이용한 API 요청 관리
  • 분산 설정(Configuration Management): Spring Cloud Config를 활용한 환경 설정 관리
  • 서킷 브레이커(Circuit Breaker): Resilience4j, Hystrix를 활용한 장애 대응
  • 분산 트레이싱: Zipkin, Sleuth를 이용한 로그 및 요청 추적

📌 예제 코드 (Spring Cloud Config)

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

 

Spring Cloud Config Server를 실행하는 기본적인 코드!

 

 

3. 인증 / 보안, Oauth2: Spring Security

✅ 주요 기능

  • 세션 기반 인증 및 권한 관리
  • OAuth2, JWT 인증 지원
  • CSRF, CORS 보호 기능 내장
  • Spring Boot와 쉽게 통합 가능

📌 예제 코드 (Spring Security 설정)

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http.authorizeHttpRequests(auth -> auth
                .requestMatchers("/admin/**").hasRole("ADMIN")
                .requestMatchers("/user/**").authenticated()
                .anyRequest().permitAll()
        )
        .formLogin();
        return http.build();
    }
}

 

위 설정을 적용하면 /admin/** 경로는 관리자만 접근할 수 있고, /user/**는 인증된 사용자만 접근할 수 있다!

 

 

4. 데이터베이스 통신: Spring Data

✅ 주요 기능

  • JPA(Java Persistence API) 지원
  • 자동 CRUD Repository 제공 (JpaRepository 인터페이스 활용)
  • MongoDB, Redis 등 NoSQL 데이터베이스 연동 지원
  • 데이터 접근 계층의 간소화

📌 예제 코드 (Spring Data JPA)

@Entity
public class User {
    @Id @GeneratedValue
    private Long id;
    private String name;
    private String email;
    
    // Getter, Setter 생략
}

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

 

위 코드를 사용하면, UserRepository 인터페이스만 선언해도 기본적인 CRUD 메서드를 사용할 수 있다~

 

 

5. 대용량 데이터 처리: Spring Batch

✅ 주요 기능

  • 대량 데이터 처리 (ETL: Extract, Transform, Load)
  • Chunk 기반 데이터 처리
  • Job 및 Step 설정 지원
  • 스케줄링(Task Scheduling) 기능 제공

📌 예제 코드 (Spring Batch 기본 설정)

@Configuration
@EnableBatchProcessing
public class BatchConfig {
    @Bean
    public Job job(JobRepository jobRepository, Step step) {
        return new JobBuilder("exampleJob", jobRepository)
                .start(step)
                .build();
    }
    
    @Bean
    public Step step(JobRepository jobRepository) {
        return new StepBuilder("exampleStep", jobRepository)
                .tasklet((contribution, chunkContext) -> {
                    System.out.println("Batch Job 실행 중");
                    return RepeatStatus.FINISHED;
                })
                .build();
    }
}

 

위 코드는 가장 기본적인 Spring Batch 작업을 정의한 것으로, 실행 시 "Batch Job 실행 중"이 출력된다!!

 

 

 

 

 

나에게도 봄이.. 찾아올 날을 기다리며🍃

#SK, #SKALA, #SKALA1기

'프레임워크 > Spring' 카테고리의 다른 글

[Spring] HTTP 통신 흐름 과정 정리(w/MVC 패턴)  (2) 2025.03.19
[Spring] 롬복(Lombok) 라이브러리 기능  (0) 2025.02.04
[Spring] Maven vs Gradle  (4) 2024.10.06
[Spring] Gradle이란?  (4) 2024.10.06
[Spring] Maven이란?  (3) 2024.10.06