### getResourceAsReader() 메서드란?

텍스트 기반의 xml 문서를 읽어들이고 각 태그들은 DTD에 의해서 해석을 시키는 데

그걸 읽어드리기 위해서는 해당 경로를 잡아주어야 합니다.
그것을 읽어드리는 게 Resources가 갖고 있는 getResourceAsReader() 메서드이고

이때 반환 타입은 reader 클래스 타입입니다.

 


public class MemberDAO {
	// 멤버 변수로 SqlSessionFactory를 저장 받을 변수 선언
	public static SqlSessionFactory sqlMapper = null;
	
	public MemberDAO() {
	}
	
	// getInstance() 메서드는 우리가 만든 메서드로
	private static SqlSessionFactory getInstance() {
		if (sqlMapper == null) {
		// 위에서 선언한 변수가 null일 경우에만 
			try {
				String resource = "mybatis/SqlMapConfig.xml"; // 1.
				Reader reader = Resources.getResourceAsReader(resource); // resource 경로에 있는 파일을 읽어들이는 메서드
				// 새로운 SqlSessionFactory 객체를 만들어 리턴 시키겠다
				sqlMapper = new SqlSessionFactoryBuilder().build(reader); // 2.
				// sqlMapper가 만들어져야지만 sqlSession 객체를 갖다 쓸 수가 있고
				// sqlSession  객체를 얻어내야지만 마이바티스를 제공해주는 각종 메서드를 사용 할 수 있음
				reader.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return sqlMapper;
	}
}
위의 코드에서 
Resources.getResourceAsReader(resource)는 resource 경로에 있는 파일을 읽어들이는 메서드이고,
이 때 메서드가 반환하는 값은 Reader 클래스의 객체이다.

 

더보기

Reader 클래스는 자바 I/O 패키지에서 제공하는 추상 클래스로, 입력 스트림을 다루기 위한 기본 클래스
getResourceAsReader() 메서드는 파일을 읽어들이는 기능을 수행하고

이를 Reader 클래스의 객체로 반환하기 때문에, 반환 타입이 Reader 클래스 타입

 


반환 타입이 클래스 타입이라는게 어떤 의미일까?

그리고 참고로 내가 가장 와닿지 않았던 "반환 타입이 Reader 클래스 타입"이라는 표현에 대해 부연 설명을 하자면

해당 메서드getResourceAsReader()를 호출했을 때 반환되는 값이 Reader 클래스의 인스턴스(객체)라는 의미이다.

 

즉, 메서드가 실행되고 나서 반환되는 데이터의 형태가 Reader 클래스의 형태라는 것을 의미한다.

Reader 클래스는 자바의 I/O 패키지에 포함되어 있어서, 텍스트 데이터를 다룰 때 사용된다.

이 클래스를 이용하면 파일의 내용을 한 줄씩 읽거나 처리할 수 있다.

 

따라서 반환된 Reader 객체를 활용하여 파일의 내용을 읽고 처리할 수 있게 된다.

+ Recent posts