반응형
@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 쓰는건 코드가 더러워진다.
프로퍼티가 좀 쌓이면 묶어서 쓰자
반응형
'백엔드 > SpringBoot' 카테고리의 다른 글
[JPA] 영속성 전이 casecade 속성 (0) | 2020.12.26 |
---|---|
Thymeleaf 템플릿 적용하기 (0) | 2020.12.20 |
SpringBoot의 Auto Configuration과 Application.properties 설정 (0) | 2020.12.19 |
Spring Boot에 Swagger 적용하기 (0) | 2020.12.10 |
DTO 따로 만들기(Param, VO) (0) | 2020.08.02 |
댓글