Whiteship's Note

FileSystemResource vs ClassPathResource

Spring/Chapter 3 : 2007. 3. 6. 00:40


FileSystemResource경로가 프로젝트 최상위 폴더 부터 시작하고 ClassPathResource는 자원의 경로를 패키지로 구분합니다. 따라서 아무것도 안쓰면 default 패키지에 있는 것으로 인식합니다.

public class MemberBeanTest {
    @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"));
    }
}

이렇게 코드를 바꾼뒤에 테스트를 실행하면 BeanDefinitionStoreException이 발생합니다. 이 Exception은 bean 설정 파일을 못찾거나 설정 파일이 잘 못 됐을 때 발생하는 에러 입니다.
사용자 삽입 이미지
위 처럼 설정 파일의 위치를 소프 폴더로 옮겨 놓으면 됩니다.

사용자 삽입 이미지
이번에는 conf 라는 디렉토리 밑으로 설정 파일을 옮겼습니다. 도저히 패키지 명을 사용해서 접근할 방법은.. 모르겠네요; 없지 않나요.ㅋ;  이때는 아래 처럼 FileSystemResource의 생성자 인자로 쩜 하나를 사용해서 상대 경로로 찾아가게 할 수 있습니다.
public class MemberBeanTest {
    @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
top

  1. Favicon of http://decoder.tistory.com BlogIcon decoder 2007.03.06 01:24 PERM. MOD/DEL REPLY

    저렇게 될 경우에는 classpath를 이클립스 설정창에서 추가해 주면 됩니다. 빈 설정 파일이 들어있는 폴더를 프로젝트 -> Properties -> Java Build Path -> Libraries 탭 -> Add Class Folder로 추가해 주면 될것 같습니다. 지금 같은 경우엔 conf 폴더를 추가해 주시면 될 것 같네요. 단, 설정파일을 프로젝트 루트에 위치시키고 루트를 클래스 패스로 추가하는 건 안되는 것 같네요. :)

    그리고 xml 파일은 리소스라서(Java 클래스가 아니라서) 패키지 형식으로 접근할 수 있을진... 잘모르겠습니다. ^^;

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2007.03.06 08:48 신고 PERM MOD/DEL

    아.. 그렇군요.

    패키지 형식으로 접근 한다는 것이 아니라. 패키지 경로에 따라 적어줘야 한다는걸 제가 잘못 표현 했네요.

    abc.xml 이라고 적으면 default 패키지..
    keesun/abc.xml 이라고 적으면 keesun 패키지에 들어있어야 한다는 것이였어요. 흐흣

Write a comment.




: 1 : ··· : 52 : 53 : 54 : 55 : 56 : 57 : 58 :