본문 바로가기
백엔드/SpringBoot

프로퍼티 클래스 만들기

by 1005ptr 2020. 12. 19.
반응형

@Value로 프로퍼티값을 가져다 쓰는 방법

application.properties에 입력한 프로퍼티 값을 가져다 쓰고 싶을떄

이런식으로 쓸 수 있다.

@Value("${spring.oracle.datasource.mapper-locations}")
private String oracleMapperLocations;

그럼 프로퍼티 클래스는 뭔가?

  • 프로퍼티들을 용도에 따라 한 묶음으로 가져다 쓸 수 있다.
  • 사용 방법
    • application.properties에는 storage.upload-location=upload/
    • @ConfigurationProperties(Prefix) : 접두사 입력
    • .properties 파일은 'kebab-case'를 쓴다.
    • java class는 'camelCase'를 쓰니까 서로 맞춰주면 된다.
    • @SpringBootApplication 달린 클래스에 @EnableConfigurationProperties(StorageProperties.class) 추가

 

@Getter
@Setter
@ConfigurationProperties("storage")
public class StorageProperties {
    /**
     * 파일 업로드 경로
     */
    private String uploadLocation;
    /**
     * 허용 파일 확장자 목록
     */
    private String[] extensions;
}
  • 생성자로 프로퍼티 주입받아서 초기화한다.
public class FileUploadStorageService implements StorageService {
    private final Path uploadLocation;
    private final String[] types;

    @Autowired
    public FileUploadService(StorageProperties properties) {
        this.uploadLocation = Paths.get(properties.getUploadLocation());
        this.types = properties.getExtensions();
    }
}

 

결론


변수 줄줄이 쓰고 @Value 쓰는건 코드가 더러워진다.

프로퍼티가 좀 쌓이면 묶어서 쓰자

반응형

댓글