공부/스프링프레임워크 18

[spring] MyBatis

MyBatis 개요와 특징 MyBatis : 자바 오브젝트와 SQL문 사이의 자동 매핑 기능을 지원하는 ORM프레임워크로 SQL을 별도의 파일로 분리해서 관리한다. 복잡한 JDBC코드를 분리하여 깔끔한 소스코드를 유지할 수 있고 수동적인 파라미터 설정과 쿼리 결과에 대한 매핑 구문을 제거할 수 있다. MyBatis3 와 MyBatis-Spring의 주요 컴포넌트 1. 어플리케이션에서 SqlSessionFactoryBuilder 인터페이스를 호출한다 2. SqlSessionFactoryBuilder가 MyBatis Config File을 읽는다 3. SqlSessionFactoryBuilder가 SqlSessionFactory를 생성한다. 4. DB액세스 요청이 들어온다 5. SqlSessionFactor..

[spring] aop

AOP의 개요와 용어 핵심기능과 부가기능 핵심기능 : 업무로직을 포함하는 기능 부가기능 : 핵심기능을 도와주는 부가적인 기능(로깅, 보안) AOP의 개요 AOP는 애플리케이션에서의 관심사의 분리. 즉, 핵심기능에서 부가기능을 분리하는 것이다. 분리한 부가기능을 애스펙트(Aspect)라는 모듈형태로 만들어서 설계하고 개발하는 방법이다. AOP 용어 타겟 : 핵심기능을 담고 있는 모듈. 부가기능을 부여할 대상을 의미한다. 어드바이스 : 타겟에 제공할 부가기능을 담고있는 모듈 조인 포인트 : 어드바이스가 적용될 수 있는 위치. 타겟 객체가 구현한 인터페이스의 모든 메서드는 조인 포인트다. 포인트컷 : 어드바이스를 적용할 타겟의 메서드를 선별하는 정규표현식. 포인트컷 표현식은 execution으로 시작하고 메서..

[spring] Spring JDBC

데이터 액세스 공통개념 DAO패턴 데이터 액세스 계층은 DAO패턴을 적용하여 비즈니스로직과 데이터 액세스 로직을 분리하는 것이 원칙이다. DAO패턴은 서비스계층에 영향을 주지 않고 데이터 액세스 기술을 변경할 수 있는 장점이 있다. 커넥션 풀링을 지원하는 DataSource 커넥션 풀링 : 미리 DB커넥션을 풀에 준비해두고 애플리케이션이 요청할 때마다 할당하여 사용하고 다시 풀로 돌려주는 기법이다. 다중 사용자를 갖는 엔터프라이즈 시스템에서는 반드시 DB커넥션풀링 기능을 지원하는 DataSource를 사용해야한다. Spring에서는 DataSource를 공유 가능한 Spring Bean으로 등록하여 사용한다. DataSource 구현 클래스 종류 SimpleDriverDataSource : Spring이..

[spring] 사용자 관리 프로젝트 아키텍쳐

아키텍쳐 개요 대부분의 중,대규모 웹 애플리케이션은 효율적인 개발 및 유지보수를 위하여 계층화하여 개발하는 것이 일반적이다. 사용자관리 프로젝트 아키텍쳐에서 기본적으로 가지는 계층은 프리젠테이션 계층, 서비스 계층, 데이터액세스 계층 3계층과 모든 계층에서 사용되는 도메일 모델 클래스로 구성되어 있다. 각각의 계층마다 독립적으로 분리하여 구현하는 것이 가능해야 하며, 각 계층에서 담당해야 할 기능들이 있다. 각 계층 사이에서는 인터페이스를 이용하여 통신하는 것이 일반적이다.

[spring] 빈 등록 메타정보 구성 및 의존관계 설정 어노테이션

빈 등록 메타정보 구성 전략 1 : XML단독사용 모든 빈을 명시적으로 xml에 등록하는 방법이다. 생성되는 모든 빈을 xml에서 확인 할 수 있다는 장점이 있으나 빈의 개수가 많아지면 xml파이을 관리하기 힘들다. 여러 개발자가 같은 설정파일을 공유해서 개발하면 충돌이 일어날 수 있다. DI에 필요한 적절한 setter메서드나 constructor가 코드내에 반드시 존재해야 한다. 빈 등록 메타정보 구성 전략 2 : XML과 빈 스캐닝(Bean scanning)의 혼용 빈으로 사용될 클래스에 특별한 어노테이션을 부여하면 클래스를 자동으로 찾아서 빈으로 등록한다. 특정 어노테이션이 붙은 클래스를 자동으로 찾아서 빈으로 등록하는 방식을 빈 스캐닝을 통한 자동인식 빈 등록기능이라고 한다. 어놑이션을 부여하고..

[spring] DI, DL

DI : 클래스간의 의존관계를 빈 설정(Bean Definition)정보(xml, 어노테이션)를 바탕으로 컨테이너가 자동으로 연결해주는 것. => 개발자는 빈 설정파일에 의존관계가 필요하다는 정보를 추가 => 객체 레퍼런스를 컨테이너로부터 주입받아서 실행시에 동적으로 의존관계가 생성 è 장점 : 코드가 단순해진다, 컴포넌트간의 결합도가 제거된다. DI의 유형 1. Setter Injection : setter메서드를 이용한 의존성 삽입 2. Constructor Injection : 생성자를 이용한 의존성 삽입 3. Method Injection : 일반 메서드를 이용한 의존성 삽입 스프링 DI컨테이너의 개념 Spring DI container가 관리하는 객체를 빈(Bean)이라고 하고, 이 빈들을 관리..

[spring] 디자인패턴, 스프링 프레임워크

디자인패턴 : 소프트웨어 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 노하우를 축적하여 재사용하기 좋은 형태로 특정 규약을 묶어서 정리한 것. 요구사항변경에 대한 소스코드 변경을 최소화, 범용적인 코딩스타일을 적용, 직관적인 코드를 사용하기 위함. 프레임워크 : 비기능적 요구사항을 만족하는 구조와 구현된 기능을 안정적으로 실행하도록 제어해주는 라이브러리의 모음 => 1. 애플리케이션들의 최소한의 공통점을 찾아 하부 구조를 제공함으로써 개발자들로 하여금 시스템의 하부 구조를 구현하는데 들어가는 노력을 절감하게 해준다. 2. 기능적인 요구사항에 집중할 수 있게 한다. 3. 디자인 패턴과 같이 반복적으로 발견되는 문제를 해결하기 위한 솔루션을 제공한다. 디자인패턴과 프레임워크 디자인패던은 프..

[spring] sw재사용을 높이는 방안

sw재사용을 높이는 방안 1. 복사, 붙이기 => 동일한 기능을 제공하는 향상된 인터페이스가 나오면 코드를 변경해야함. 2. 메서드 재사용 => 메서드의 signature(메서드명,리턴타입,인자개수,인자타입)이 변경되면 메서드를 호출하는 다른 클래스에 영향을 준다.(여전히 결합도 문제는 남아있다.) 3. 클래스 재사용 => 부모클래스의 메서드signature가 변경되면 자식클래스에 영향을 준다. 4. AOP(aspect oriented programming) => oop를 support해주는 개념이다. 핵심관심모듈(비즈니스로직), 횡단관심모듈(비즈니스로직을 서포트하는 기능적 로직)으로 나누어 구현한다.(관심의 분리 separation of concerns) Framework에서 위빙(weaving)이라고..