DAO 패턴 - 데이터 액세스 계층은 DAO 패턴을 적용하여 비지니스 로직과 데이터 액세스 로직을 분리하는 것이 원칙. - 비지니스 로직이 없거나 단순하면 DAO와 서비스 계층을 통합할 수도 있지만, 의미 있는 비지니스 로직을 가진 어플리케이션이라면 데이터 액세스 계층을 DAO 패턴으로 분리해야 함. - DAO 패턴은 서비스 계층에 영향을 주지 않고 데이터 액세스 기술을 변경할 수 있는 것이 장점. 커넥션 풀링을 지원하는 DataSource 커넥션 풀링은 미리 정해진 갯수만큼의 DB 커넥션을 풀에 준비해두고, 어플리케이션이 요청할 때마다 Pool에서 꺼내서 하나씩 할당해주고 다시 돌려받아서 Pool에 넣는 식의 기법. - 다중 사용자를 갖는 엔터프라이즈 시스템에서라면 반드시 DB 커넥션 풀링 기능을 지원..
아키텍쳐 개요 - 사용자 관리 프로젝트 아키텍쳐에서 기본적으로 가지는 계층은 프리젠테이션 계층, 서비스 계층, 데이터 액세스 계층 그리고 3계층과 모든 계층에서 사용되는 도메인 모델 클래스로 구성. - 각각의 계층은 계층마다 독립적으로 분리하여 구현하는 것이 가능해야 하며, 각 계층에서 담당해야 할 기능들이 있다. - 각 계층 사이에서는 인터페이스를 이용하여 통신하는 것이 일반적. 프리젠테이션 계층 브라우저 상의 웹클라이언트의 요청 및 응답을 처리 상위 계층 (서비스 계층, 데이터 액세스 계층)에서 발생하는 예외에 대한 처리 최종 UI에서 표현해야 할 도메인 모델을 사용 최종 UI에서 입력한 데이터에 대한 유효성 검증 기능을 제공 비지니스 로직과 최종 UI를 분리하기 위한 컨트롤러 기능 제공 @Contr..
Bean 등록 Annotation @Component 컴포넌트를 나타내는 일반적인 스테리오 타입으로 태그와 동일한 역할을 함@Repository 퍼시스턴스 레이어, 영속성을 가지는 속성(파일, 데이터베이스)을 가진 클래스@Service 서비스 레이어, 비지니스 로직을 가진 클래스@Controller 프리젠테이션 레이어, 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스 - @Repository, @Service, @Controller는 더 특정한 유즈케이승 대한 @Component의 구체화된 형태이다. Bean 의존관계 주입 Annotation @Autowired, @Resource annotation은 의존하는 객체를 자동으로 주입해주는 annotation이다.@Autowired 정밀한 의존관계 주..
Setter Injection : 태그 Setter 메소드를 통해 의존관계가 있는 Bean을 주입하려면 태그를 사용할 수 있다. - ref 속성을 사용하면 Bean이름을 이용해 주입할 Bean을 찾는다. - value 속성은 단순 값 또는 Bean이 아닌 객체를 주입할 때 사용한다. : 간단한 POJO 클래스를 통한 DI 이해 File -> value.properties 생성 후, 아래와 같이 입력. 치환자 ${ }를 사용할 수 있도록 Bean의 Namespace 항목에서 context를 선택하고, 태그를 사용. 이후 아래와 같이 치환.* 결과 생략
POJO 클래스 다이어그램 * Hello 클래스가 StringPrinter 클래스를 바로 의존하는 것이 아닌, Printer Interface를 의존하는 형태 및 setter 방식으로 작성 예정. Hello.class Printer.class (Interface) StringPrinter.class ConsolePrinter.class bean.xml* 나의 해석 - name 필드에는 Hello에서 설정한 변수의 이름을 넣는다. - Bean 객체 타입이 아닌 경우 value 속성 사용. - Bean 객체 타입인 경우 ref 속성에는 bean이름을 이용해 주입할 bean을 찾는다. - 해당 id의 bean은 StringPrinter bean이므로 의존 관계가 성립. HelloTest.class * 11행 ..
IoC의 개념 IoC(제어권의 역전)이란, 객체의 생성, 생명 주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미하는 디자인 패턴.-> 프레임워크에서 개발자의 코드에 객체를 주입함으로써 개발자가 신경써야 할 코드를 줄이는 전략. IoC의 분류 IoCDL(Dependency Lookup)의존성 검색 저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lookup하는 것.DI(Dependency Injection)의존성 주입 각 클래스간의 의존관계를 빈 설정 (Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것. -> DI의 종류로는 Setter Injection / Constructor Injection / Method ..
Spring Framework ? -> 경량급 애플리케이션 프레임 워크 Spring Triangle ? 엔터프라이즈 개발의 복잡함을 상대하는 Spring의 전략 -> Portable Service Abstraction, DI, AOP, POJO Portable Service Abstraction(서비스 추상화) - 기술적인 복잡함은 추상화를 통해 분리. - Low Level의 기술 구현부 / 기술을 사용하는 인터페이스부 - 개발자는 복잡한 기술 구현부를 생각할 필요 없이 인터페이스만 가져다 쓰면 된다. DI(Dependency Injection) - 유연하게 확장 가능한 객체를 만들어 두고 그 관계는 외부에서 동적으로 설정. AOP(Aspect Oriented Programming) - 핵심 기능과 공통..