- 어플리케이션에서 제공하는 자원들을 보호해야하는 자원/ 하지않아도 되는 자원을 식별
- 보호가 필요한 자원에 대해서 누구에게 접근을 허용할 것인지 (인가 정보)를 설정한다. 이때, 보호가 필요한 자원을 어딘가에 저장을 해야 한다. (=DB) 보호 자원이라는 테이블을 만들어 준 다음에, 자원에 대한 정의를 넣어준다.
또, 우리 사이트에 대한 Role을 결정한다.- 보호자원과 Role에 대한 관계를 형성하는 자원에 대한 테이블이 필요하다.
- 어떤 유저가 어떤 Role을 부여받았다는 것이 필요하다.
Filter Pattern을 사용해야하는 이유
- 기존의 어플리케이션을 건드리지 않아야 한다.
- 접근 제어를 하나 안하나 영향이 없어야 한다.
보안 Framework를 썼을 때 Filter 구조를 이해하기가 목적이다.
보호가 필요한 자원 -> 인증이 되어있는지? -> 되어있다면 접근 가능한 유저인지? -> 최종 자원
Properties의 파일의 Key들을 읽어올 때 보호 자원에 대한 정보는 동적으로 변하지 않기 때문에 Application 상에서 딱 한번 하면 되기 때문에 Init()
Resource Bundle 이란..?
요구사항 분석
사용자 분류
Usecase Diagram 도식화(어플리케이션 설계)
프로세스 절차 도식화 Sequence Diagram(어플리케이션 설계)
ERD DB 설계 (데이터 설계)
======== 최종적으로 설계도/ DB가 도출됨=====
Table을 가지고 개발을 진행.
attach가 3개라면 3번이 들어가야 한다. foreach : attachList
index => 순차적으로 증가하면서 PK가 자동으로 하나씩 증가되면서 생성된다.
File저장할 떄 메타데이터/ 이진데이터를 분리해서 저장해야한다.
어느단계에서 분리해서 저장할 것인가?
상품에서는 Controller에서 이진데이터를 넣는 코드를 했어야했다. 저장하는 위치가 IMG라서 WebResource로 잡아야 했기 때문이다.
하지만 ServletContext가 필요없는 첨부파일이기 때문에, Business Logic 에서 Insert를 해야 한다.
Board/Attach 다 성공 하고 나면 File의 이진 데이터를 저장하는 것.
첨부파일에 대한 처리
1. 메타데이터 처리 insert DB
2. 이진데이터 처리 insert
만약 둘의 순서가 바뀐다면, 하나의 글을 등록하는 과정에서 Exception이 발생하는 상황을 고려해야한다.
DB에 넣으면 Rollback이 되기 때문이다.
작업이 transaction을 관리해줘야 한다.. 어떻게하면 transaction을 어느 layer를 대상으로 관리할 것인지?