Bean 설정을 하면서 Bean 생성이 뭐 어떻게 되는거지 라는의문점이 생겨서 직접 JAVA로 Bean을 생성해 봤다.
일반 Bean의 속성에 대해서 알아보자면
class : 정규회된 자바 클래스 이름
id : bean의 고유 식별자
scope : 객체의 범위(Singleton, Prototype)
-singleton : 하나의 Bean정의에 대해 Spring IocContainer 에서 단 하나의 객체만 존재, (default : singleton)
-prototype : 하나의 Bean 정의에 대해서 다수의 객체가 존재할 수 있음
constructor-arg : 생성자에 전달할 인수
property : 생성시 Bean setter에 전달할 인수
init Method와 Destory Method
첫번째 DataSource를보자면
HikariConfig 객체를 생성하여 property 를 주입해주는데 set매서드를 통해서
이렇게 생성된 HikariConfig 객체를 HikariDataSource객체에 생성자 매서드로 추가해준 모습입니다.
여기서 HikariDataSource 는 DataSource를 상속하고 있으므로 리턴타입이 DataSource여도 리턴이 가능합니다.
두번째를 보면
<bean id="sqlSessionFactory" class="~~~.SqlSessionFactoryBean">임의 볼수있는데
id="sqlSessionFactory"인이유는 SqlSessionFactory를 등록하기 위하여 SqlSessionFactoryBean을 사용하는 부분으로
SqlSessionFactoryBean객체에다가 dataSource객체를 생성자 메서드로 주입한 후 ~~.getObejct() 하여
SqlSessionFactoy 객체를 반환 받습니다.
JUnit을 통해서 테스트 할때 ojdbc8 dependency 를추가 하지 않아서 발생한 에러
[
Caused by: java.lang.RuntimeException: Failed to load driver class oracle.jdbc.driver.OracleDriver in either of HikariConfig class loader or Thread context classloader
at com.zaxxer.hikari.HikariConfig.setDriverClassName(HikariConfig.java:491)
]
입니다. 추가해주고 나서 확인하니 정상 테스트 되었습니다.
'dev > Spring' 카테고리의 다른 글
[Spring] HttpServletRequest, HttpServletResponse (0) | 2022.05.19 |
---|---|
[Spring] HttpServeltRequest, HttpServeltResponse, Session (0) | 2022.03.10 |
[JUnit] JUnit 사용하여 단위테스트 하기 (0) | 2022.03.02 |
[Spring] Controller Exception처리 (0) | 2022.01.20 |
[Spring] file-Upload (0) | 2022.01.20 |