Service 객체 분리, Oracle 연결 정보 분리

Codren·2021년 8월 19일
0
post-custom-banner

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(); 코드 삽입
post-custom-banner

0개의 댓글