FileSystemResource vs ClassPathResource
Spring/Chapter 3 : 2007. 3. 6. 00:40
FileSystemResource는 경로가 프로젝트 최상위 폴더 부터 시작하고 ClassPathResource는 자원의 경로를 패키지로 구분합니다. 따라서 아무것도 안쓰면 default 패키지에 있는 것으로 인식합니다.
이렇게 FileSystemResource를 사용하여 설정 파일의 위치를 나타낼 경우 저 파일은 아래 그림과 같이 프로젝트 최상위 폴더에 있어야 합니다.

이렇게 코드를 바꾼뒤에 테스트를 실행하면 BeanDefinitionStoreException이 발생합니다. 이 Exception은 bean 설정 파일을 못찾거나 설정 파일이 잘 못 됐을 때 발생하는 에러 입니다.
위 처럼 설정 파일의 위치를 소프 폴더로 옮겨 놓으면 됩니다.
이번에는 conf 라는 디렉토리 밑으로 설정 파일을 옮겼습니다. 도저히 패키지 명을 사용해서 접근할 방법은.. 모르겠네요; 없지 않나요.ㅋ; 이때는 아래 처럼 FileSystemResource의 생성자 인자로 쩜 하나를 사용해서 상대 경로로 찾아가게 할 수 있습니다.
public class MemberBeanTest {
@Test
public void createBean(){
Resource resource = new FileSystemResource("beanConfiguration.xml");
BeanFactory bf = new XmlBeanFactory(resource);
assertNotNull(bf.getBean("member"));
}
}
@Test
public void createBean(){
Resource resource = new FileSystemResource("beanConfiguration.xml");
BeanFactory bf = new XmlBeanFactory(resource);
assertNotNull(bf.getBean("member"));
}
}
이렇게 FileSystemResource를 사용하여 설정 파일의 위치를 나타낼 경우 저 파일은 아래 그림과 같이 프로젝트 최상위 폴더에 있어야 합니다.
public class MemberBeanTest {
@Test
public void createBean(){
Resource resource = new ClassPathResource("beanConfiguration.xml");
BeanFactory bf = new XmlBeanFactory(resource);
assertNotNull(bf.getBean("member"));
}
}
@Test
public void createBean(){
Resource resource = new ClassPathResource("beanConfiguration.xml");
BeanFactory bf = new XmlBeanFactory(resource);
assertNotNull(bf.getBean("member"));
}
}
이렇게 코드를 바꾼뒤에 테스트를 실행하면 BeanDefinitionStoreException이 발생합니다. 이 Exception은 bean 설정 파일을 못찾거나 설정 파일이 잘 못 됐을 때 발생하는 에러 입니다.
public class MemberBeanTest {
@Test
public void createBean(){
Resource resource = new FileSystemResource("./conf/beanConfiguration.xml");
BeanFactory bf = new XmlBeanFactory(resource);
assertNotNull(bf.getBean("member"));
}
}
@Test
public void createBean(){
Resource resource = new FileSystemResource("./conf/beanConfiguration.xml");
BeanFactory bf = new XmlBeanFactory(resource);
assertNotNull(bf.getBean("member"));
}
}
'Spring > Chapter 3' 카테고리의 다른 글
idref 엘리먼트 (0) | 2007.03.08 |
---|---|
Constructor Injection 할 때 인자 구분 (0) | 2007.03.08 |
Setter Injection & Constructor Injection (0) | 2007.03.08 |
3.3. Dependencies (0) | 2007.03.08 |
Bean 생성하기 (0) | 2007.03.07 |
복잡한 Alias (0) | 2007.03.07 |
Aliasing Beans (0) | 2007.03.07 |
id, name and BeanDefinitionName (0) | 2007.03.06 |
FileSystemResource vs ClassPathResource (2) | 2007.03.06 |
3.2. Basics - containers and beans (0) | 2007.03.05 |
BeanFactory와 ApplicationContext 인터페이스 (0) | 2007.03.05 |
저렇게 될 경우에는 classpath를 이클립스 설정창에서 추가해 주면 됩니다. 빈 설정 파일이 들어있는 폴더를 프로젝트 -> Properties -> Java Build Path -> Libraries 탭 -> Add Class Folder로 추가해 주면 될것 같습니다. 지금 같은 경우엔 conf 폴더를 추가해 주시면 될 것 같네요. 단, 설정파일을 프로젝트 루트에 위치시키고 루트를 클래스 패스로 추가하는 건 안되는 것 같네요.
그리고 xml 파일은 리소스라서(Java 클래스가 아니라서) 패키지 형식으로 접근할 수 있을진... 잘모르겠습니다. ^^;
아.. 그렇군요.
패키지 형식으로 접근 한다는 것이 아니라. 패키지 경로에 따라 적어줘야 한다는걸 제가 잘못 표현 했네요.
abc.xml 이라고 적으면 default 패키지..
keesun/abc.xml 이라고 적으면 keesun 패키지에 들어있어야 한다는 것이였어요. 흐흣