본문 바로가기
스프링 부트3

스프링 부트 3에서 프로퍼티 파일 설정

by 굿센스굿 2024. 12. 4.
반응형

 

스프링 부트 3에서는 애플리케이션 설정을 위해 주로 application.properties 또는 application.yml 파일을 사용합니다. 이러한 설정 파일은 애플리케이션의 다양한 구성 옵션을 정의하고 관리하는 데 매우 유용합니다. 이 글에서는 스프링 부트 3에서 프로퍼티 파일을 설정하는 방법을 상세히 설명하고, 예제를 통해 이를 활용하는 방법을 소개하겠습니다.

1. 기본 프로퍼티 파일 설정

스프링 부트 3에서는 기본적으로 src/main/resources 디렉토리에 application.properties 또는 application.yml 파일을 생성하여 설정을 관리합니다. 다음은 주요 설정 항목들에 대한 예시입니다.

  1. 서버 설정:
    • 서버 포트와 관련된 설정입니다.
# application.properties
server.port=8080
server.servlet.context-path=/myapp
# application.yml
server:
  port: 8080
  servlet:
    context-path: /myapp
  1. 데이터베이스 설정:
    • 데이터베이스 연결 정보와 관련된 설정입니다.
# application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword
spring.jpa.hibernate.ddl-auto=update
# application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: myuser
    password: mypassword
  jpa:
    hibernate:
      ddl-auto: update
  1. 로그 설정:
    • 로그 레벨을 조정하는 설정입니다.
# application.properties
logging.level.org.springframework=INFO
logging.level.com.example=DEBUG
# application.yml
logging:
  level:
    org.springframework: INFO
    com.example: DEBUG

2. 프로파일(Profile) 설정

스프링 부트는 프로파일(Profile) 기능을 제공하여 다양한 환경(dev, prod 등)에서 다른 설정을 사용할 수 있도록 합니다. 프로파일별 설정 파일을 사용하려면 파일 이름에 프로파일 이름을 추가합니다. 예를 들어, application-dev.properties, application-prod.properties 등을 사용할 수 있습니다.

  1. 프로파일별 설정 파일:
# application-dev.properties
spring.datasource.url=jdbc:mysql://localhost:3306/devdb
spring.datasource.username=devuser
spring.datasource.password=devpassword
# application-prod.properties
spring.datasource.url=jdbc:mysql://localhost:3306/proddb
spring.datasource.username=produser
spring.datasource.password=prodpassword
  1. 프로파일 활성화:
    • application.properties 파일 또는 application.yml 파일에서 기본 프로파일을 설정할 수 있습니다.
# application.properties
spring.profiles.active=dev
# application.yml
spring:
  profiles:
    active: dev

또는, 애플리케이션 실행 시 커맨드 라인 인수를 통해 프로파일을 지정할 수도 있습니다.

$ java -jar myapp.jar --spring.profiles.active=prod

3. 외부 설정 파일 사용

스프링 부트는 외부 설정 파일을 통해 애플리케이션 설정을 오버라이드할 수 있습니다. 이는 컨테이너 환경에서 애플리케이션을 실행할 때 유용합니다.

  1. 외부 프로퍼티 파일 사용:
    • 애플리케이션 실행 시 외부 프로퍼티 파일을 지정할 수 있습니다.
$ java -jar myapp.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties,file:./custom.properties

4. 예제 코드

스프링 부트 애플리케이션에서 프로퍼티 파일을 사용하는 간단한 예제를 만들어 보겠습니다. 이 예제에서는 데이터베이스 설정과 로깅 설정을 다룹니다.

  1. 프로퍼티 파일 설정:
    • src/main/resources/application.properties 파일에 다음 설정을 추가합니다.
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update

logging.level.org.springframework=INFO
logging.level.com.example=DEBUG
  1. 엔티티 클래스 생성:
    • src/main/java/com/example/demo 디렉토리에 User 엔티티 클래스를 생성합니다.
package com.example.demo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private String email;

    // getters and setters
}
  1. 레포지토리 인터페이스 생성:
    • src/main/java/com/example/demo 디렉토리에 UserRepository 인터페이스를 생성합니다.
package com.example.demo;

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

public interface UserRepository extends JpaRepository<User, Long> {
}
  1. 서비스 클래스 생성:
    • src/main/java/com/example/demo 디렉토리에 UserService 클래스를 생성합니다.
package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    public User saveUser(User user) {
        return userRepository.save(user);
    }
}
  1. 컨트롤러 클래스 생성:
    • src/main/java/com/example/demo 디렉토리에 UserController 클래스를 생성합니다.
package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/users")
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @PostMapping("/users")
    public User saveUser(@RequestBody User user) {
        return userService.saveUser(user);
    }
}
  1. 애플리케이션 실행 및 테스트:
    • 애플리케이션을 실행하고 http://localhost:8080/users 엔드포인트를 통해 사용자 목록을 조회하고, 사용자 데이터를 추가할 수 있습니다.

5. 결론

스프링 부트 3에서 프로퍼티 파일 설정은 애플리케이션의 다양한 구성을 관리하는 데 필수적인 요소입니다. 이 가이드를 통해 기본적인 설정 방법부터 프로파일 설정, 외부 설정 파일 사용 방법까지 다루어 보았습니다. 이러한 설정을 적절히 활용하여 다양한 환경에서 애플리케이션을 효율적으로 관리할 수 있을 것입니다.

반응형