Section 1. Service 객체 분리
1. Service 객체와 Controller
- 아래와 같이 컨트롤러가 서비스 객체를 멤버변수로 가지고있을 때 (DI 상황) 서비스 객체의 기능은 유지하며 기술 방법을 달리한다면 코드를 바꿔야되는 상황이 오게됨
- 구체적인 객체 사용이 아닌 인터페이스를 사용하여 둘 사이의 결합력을 낮춤 (느슨한 결합력)
// JDBC 를 JPA로 변경한다면 재컴파일 및 재빌드 필요없이 설정파일만 변경
<bean id ="noticeService" class="webprj.service.jdbc.JDBCNoticeService"/>
2. Service 인터페이스
3. JDBCNotcieService 객체
4. Controller
- 특정 noticeService 객체가 아닌 NoticeService 인터페이스를 참조형으로하여 멤버변수로 Service 객체를 DI
Section 2. Oracle 연결 정보 분리
1. OracleDB Connection
- url - 접속 및 연결하려고 하는 OracleDB 의 주소 및 포트번호
- uid / pwd - 계정 ID / PW
- driver - Java 와 Oracle 사이의 연결을 도와주는 드라이버
2. 연결 정보 분리의 필요성
- 자바코드 내에 오라클 연결 코드를 삽입하면 컴파일을 통해 바이너리코드화되어 배포되는데 만약 오라클 계정 비밀번호가 바뀌거나 호스트의 정보가 바뀌게된다면 오라클 연결 정보 코드가 있는 모든 부분을 찾아서 바꾸고 재컴파일 및 재배포 해야되는 번거로움이 발생
- 연결 정보를 xml 설정 파일에 텍스트로 지시하여 필요한 객체 DI 하는 방식으로 바꿈
3. spring jdbc 라이브러리 주입
- release 버전으로 (module 버전 x)
4. DataSource 클래스 bean 지정
- DataSource 클래스 생성 및 속성 지정 (oracle 접속정보)
- noticeService 객체에 DataSoruce DI
5. JDBCNotcieService 객체
- DataSource 를 멤버변수로 DI
- Connection con = dataSource.getConnection(); 코드 삽입