본문 바로가기
학습/Spring

[spring] Annotation 내 classpath의 기본경로

by KKambi 2019. 12. 14.
  • 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

댓글