- Spring Boot을 시작하면서 Configuration을 Injecting하는 과정을 배우고 있다.
- @Configuration을 conjuction으로 하는 @PropertySource( )에서, classpath의 기준 경로는 어디일까 궁금했다.
package board.configuration;
import javax.sql.DataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
@PropertySource("classpath:/application.properties")
public class DatabaseConfiguration {
@Bean
@ConfigurationProperties(prefix="spring.datasource.hikari")
public HikariConfig hikariConfig() {
return new HikariConfig();
}
@Bean
public DataSource dataSource() throws Exception{
DataSource dataSource = new HikariDataSource(hikariConfig());
System.out.println(dataSource.toString());
return dataSource;
}
}
정답 - src/main/resource/
배경설명
- Maven이나 Gradle을 사용하여 스프링 프로젝트를 만들게 되면 src/main/resources 디렉토리에 리소스 파일을 저장
- *.java 파일처럼 컴파일 대상이 되는 소스파일이 아닌 파일들을 리소스 디렉토리에 저장하여 관리
- 프로젝트를 빌드하면 리소스 파일들은 CLASS_PATH에 위치
이유
- ClassPathResource는 스프링 프레임워크가 제공하는 클래스로, 리소스에 대한 파일 이름, File 객체, URL, URI 등 리소스와 관련된 정보를 제공
- 이를 annotation 안에서 쉽게 사용할 수 있는 것으로 보인다.
ClassPathResource resource = new ClassPathResource("data/data.txt");
resource.getFile(); // 파일 객체
resource.getFilename(); // 파일 이름
resource.getInputStream() // InputStream 객체
resource.getPath(); // 파일 경로
resource.getURL(); // URL 객체
resource.getURI(); // URI 객체
'학습 > Spring' 카테고리의 다른 글
[spring] DAO와 Repository / DTO / VO (0) | 2020.02.02 |
---|---|
[java] Gradle(그레이들)이란? (0) | 2020.01.05 |
[java] Lombok이란? (0) | 2019.12.14 |
[java] jar, war, ear (0) | 2019.12.14 |
[java] JDBC / MyBatis / JPA / Spring-Data-JPA (0) | 2019.12.14 |
댓글