[파이널 기획]
볼륨 축소 확정- SQL 짜면서 테이블 만들고, JOIN등 RDBMS로 테스트 해봐서 쿼리 확정!(~3/9&10)
- 치킨 이미지, 상품명, 점포명 등 엑셀화 해서 사용할 만큼 미리 해놓을 것.
- 부트스트랩 디자인 사용될 페이지만! 만들어놓는 식으로 (데이터 확인해야하니까)(~3/12&13+
공동작업 - 공동확정
메인 - 검색 필터 (+ 사진만 박아놓을 것 - 이벤트&카드뉴스 연동은 미루기)
상세검색 - 검색 필터 값 이용 리스트 표시, 검색기능 필터 구현, 별점&후기순으로 리스트 재정렬 버튼, 검색 필터 재 구현 및 리스트 실시간 반영(+지도 박아놔 - 지도 및 점포 등록 후 지도에 표시 UI 미루는 걸로)
⇒ 핵심 기능이니 같이 구현해보자는 초창기 기획의도에 맞춰서 공동작업으로 분류해두었음.
[오늘의 키워드]
*GOF 디자인패턴
*팩토리디자인
→ 핵심 : 인터페이스를 이용해서 생성함으로써 객체를 이용하는 코드에서 생성 객체에 직접 결합되지 않게 하려는 것
Spring IOC
개발자가 아닌 Spring container가 객체 관리
→ spring bean configuration file (xml) 에서 관리한다.
스프링 빈을 등록하는 방법
<bean> : 스프링 컨테이너에게 스프링 빈 관련 정보를 제공하는 엘리먼트
Spring Bean : 스프링 컨테이너에 의해 관리되는 클래스(객체)
class 속성 : Spring bean 으로 등록될 클래스를 속성값으로 설정
id 속성 : Spring bean을 구분하기 위한 식별자를 속성값으로 설정
DL(dependency Lookup) : 컨테이너로부터 필요한 빈을 제공받는 기능
getBean() : 빈을 구분하는 식별자를 전달받아 컨테이너로부터 빈을 반환하는 메소드
Application Context→ 미리 만들어서 제공해준다
xml 파일설정 시 , 초기화설정을 한번만 한다.
<bean class="xyz.itwill04.bean.InitDestroyMethodBean" id="initDestroyMethodBean"
init-method="init" destroy-method="destroy"/>
리플렉션 기능에 의해 클래스가 메모리에 저장된 후 정적영역의 명령이 실행되어 객체 생성된다.
factory method 속성 : 싱글톤 클래스에서 객체를 반환하는 메소드 이름을 속성값 설정 → 컨테이너에의해 객체를 생성하지 않고 정적영역에서 생성된 객체를 제공받는다.
→ 앞으로 싱글톤디자인패턴을 적용한 클래스를 만들 필요가 없다.
→ 만약에 만들어진 클래스이더라도 factory-method 속성을 사용하면 해결된다.
어노테이션을 활용해서 스프링 빈을 등록하는 방법
component-scan : Spring Annotation을 스프링 컨테이너가 처리할 수 있도록 인식되어 처리하는 엘리먼트
→ context 네임스페이스의 spring-context.xsd 파일에서 제공하는 엘리먼트
base-package 속성 : spring Container가 Spring Annotation을 사용한 클래스를 검색하기 위한 패키지를 속성값으로 설정
@configuration
⇒ 스프링 컨테이너가 관리하기 위한 클래스를 스프링 빈으로 등록하기기능을 제공하는 환경설정 클래스를 구현하기 위한 어노테이션
→ bean configuration file 의 beans 엘리먼트와 유사한 기능을 제공
Dependency 관리
스프링에서 프레임워크가 관리하는 bean을 다른 bean에서 사용할 수 있도록 설정해주는 역할까지 대행하는것.
⇒ 어떤 빈을 어떻게 결합시켜 이용해야 하는지 프로그램 코드에 명시하지 않아도 되기때문에, 두 빈간의 결합도가 최소화되어 유지보수에 큰 도움
Constructor Injection
클래스의 매개변수가 선언된 생성자를 이용하여 Spring bean 객체 생성
→ 생성자의 매개변수가 값을 전달받아 필드에 저장 - 필드초기화
→ 생성자를 이용하여 필드를 초기화 처리 - Constructor Injection
<constructor-arg> : 생성자의 매개변수에 값(객체)를 전달하기위한 엘리먼트
→엘리먼트의 갯수만큼 매개변수가 선언된 생성자가 반드시 작성
<value>속성 : 매개변수에 전달할 값을 속성값으로 설정 - Value Injection
→전달값은 기본적으로 문자열(String)전달 - 매개변수 자료형에 의해 자동 형변환
→전달값이 자동으로 형변환 될경우 NumberFormatException 발생 가능
<index>속성 : 전달값이 저장될 생성자의 매개변수의 순서를 속성값으로 설정
<bean class="xyz.itwill05.di.Student" id="student3">
<constructor-arg value="1000"/ index="0">
<constructor-arg value="홍길동" index="1"/>
<constructor-arg value="abc@itwill.xyz" index="2"/>
</bean>
Service 클래스
프로그램 실행에 필요한 기능을 제공하기 위한 클래스 - 컴퍼넌트(모듈)
→service 클래스의 메소드는 dao 클래스의 메소드를 호출하여 프로그램 실행에 필요한 기능 제공한다.
→ service 클래스가 변경되어도 프로그램 작성에 영향을 최소화 하기 위해 인터페이스를 상속받아 작성한다.
유지보수의 효율성을 높이기 위해서는 참조변수를 부모(즉 인터페이스)로 만들어줘야한다.
StudentDAO 인터페이스를 상속받은 자식클래스의 객체를 필드에 저장해야 포함관계가 성립
부모 인터페이스의 참조변수로 메소드를 호출하면 참조변수(필드)에 저장된 자식클래스객체의 메소드 호출 → 오버라이드
→포함관계의 클래스가 변경되도 현재클래스 유지
*객체를 전달해서 의존관계가 성립되게끔 하는것을 dependency injection이라고한다
★필드의 자료형은 무조건 인터페이스로 선언해야 한다. → 컨테이너에서 자식객체를 의존성주입하는 형식으로!!!!
⇒ Setter Injection으로의 방법도 있다. 클래스에 필드자료형이 없을경우, 세터를 이용하는 방법이다.
제네릭을 인터페이스로 저장한경우, 모든 자식클래스의 객체를 요소로 저장할 수 있다.
properties ⇒ 내부적으로 map을 상속받은 클래스 → map<String,String> 이 꼴임
의존관계 자동설정
'일기장 > 하루 정리' 카테고리의 다른 글
220309 [수] MySql , query 짜기 (0) | 2022.03.09 |
---|---|
220308 [화] Annotation , AOP (0) | 2022.03.08 |
220303 [목] 멋쟁이사자 자소서 , 메이븐 (0) | 2022.03.03 |
220302 [수] 부트스트랩(마이페이지) / 멋쟁이사자 자소서 / 동적 sql (0) | 2022.03.02 |
220228 [월] resultMap , 동적 SQL (0) | 2022.02.28 |