리스트 7-19 생성자 초기호 ㅏ방법을 사용하는 XmlSqlService 클래스
실습을 하는 중
public class XmlSqlService implements SqlService{
...
public void read(SqlRegistry sqlRegistry) {
String contextPath = Sqlmap.class.getPackage().getName();
try {
JAXBContext context = JAXBContext.newInstance(contextPath);
Unmarshaller unmarshaller = context.createUnmarshaller();
InputStream is = UserDao.class.getResourceAsStream("sqlmap.xml");
Sqlmap sqlmap = (Sqlmap)unmarshaller.unmarshar(is);
...
InputStream is = UserDao.class.getResourceAsStream("sqlmap.xml");
구문에서 파일을 찾을 수 없다고 나오며, is가 계속 null로 나와서 진행이 안됐다.
다른 실습하신 분에 소스를 참조해 보니
Sqlmap sqlmap = (Sqlmap) unmarshaller.unmarshal(getXmlFile(this.sqlMapFile));
private File getXmlFile(String fileName) {
ClassLoader classLoader = getClass().getClassLoader();
return new File(classLoader.getResource(fileName).getFile());
}
sqlmap을 받아오는 부분을 getXmlFile이라는 메소드를 만들어서 진행을 하셔서 참조를 했다.
public void read(SqlRegistry sqlRegistry) {
String contextPath = Sqlmap.class.getPackage().getName();
try {
JAXBContext context = JAXBContext.newInstance(contextPath);
Unmarshaller unmarshaller = context.createUnmarshaller();
Sqlmap sqlmap = (Sqlmap) unmarshaller.unmarshal(getXmlFile("sqlmap.xml"));
for (SqlType sql : sqlmap.getSql()) {
sqlRegistry.registerSql(sql.getKey(), sql.getValue());
}
} catch (JAXBException e) {
throw new RuntimeException(e);
}
}
private File getXmlFile(String fileName) {
ClassLoader classLoader = getClass().getClassLoader();
return new File(classLoader.getResource(fileName).getFile());
}
위와 같이 수정을 했지만, 똑같이 파일을 찾을 수가 없었다.
참조: https://okky.kr/article/271934
에러에 대해 추적하다가 위와 같은 글에 내용을 확인하게 되었다.
그래서 java소스쪽 파일목록(src/java/...)이 아닌 실제로 class파일과 xml파일이 있는 target경로를 열어보니 sqlmap.xml이 없었다.
위와 같이 resources경로 밑에 mapper에 sqlmap파일을 성생해 주니 target에 파일이 생성 되었다.
그리고 난 후 mapper폴더를 생성 후 그 아래에 sqlmap.xml을 생성 하였으므로,
"sqlmap.xml" -> "mapper/sqlmap.xml"로 수정하니 정상적으로 테스트코드가 통과되었다!
책에 스프링 버전과 이클립스 환경에 영향이 있는지는 모르겠지만
지금 내가 테스트하는 환경이 스프링부트에 인텔리제이 버전이라 차이가 있는 것 같다... ㅠ
'개발서적 > 토비 스프링 3.1-Vol.1' 카테고리의 다른 글
[토비의 스프링 - Vol.1]7.5.2 내장형 데이터베이스 (0) | 2021.05.29 |
---|---|
[토비의 스프링 - Vol.1] 내가 몰랐던 용어 정리 (0) | 2021.05.15 |
[토비의 스프링 - Vol.1]7.2.1 xml 파일 매핑 - JAXB 관련 실습 중 나온 현상 (0) | 2021.04.29 |
[토비의 스프링 - Vol.1] @Transactional (0) | 2021.04.24 |
[토비의 스프링 - Vol.1] xml 트랜잭션 설정 방법 (0) | 2021.04.20 |