Anyframe Core 소개
JavaEE는 방대한 양의 다양한 툴들과 Framework들을 가진 매우 강력한 개발 플랫폼 이지만, 이런
방대한 양의 지원이 오히려 개발자의 관점에서 보면 증가된 복잡성으로 개발이 더 어려운 실정이다.
Anyframe Core는 Spring을 중심으로 다양한 오픈소스를 통합/확장한 best-of-breed JavaEE
구성하여 JavaEE 기반 어플리케이션 개발시 겪게 되는 복잡성을 해소하고 좀 더 빠르게 개발할 수
있도록 도와주는 어플리케이션 프레임워크이다.
Anyframe Core에서 제공하는 전형적인 개발 방법과 Layered
Architecture에 기반한 application templates, 10 minutes sample
application들을 통해 개발자는 좀더 빠르게 비즈니스 로직 영역에만 집중하여 개발을 진행할 수 있을
것이다.
Anyframe Core의 특징
-
프레임워크로 인한 기본 설계와 상세 설계가 이중으로 진행되거나,
개발 시 설계 모델이 구현체와 불일치 되는 것을 방지하기 위해 순수 객체 중심의(POJO) 어플리케이션 개발을 지원한다.
-
철저하게 인터페이스 중심의 개발을 가이드하고 객체나 컴포넌트간의 참조 관계는 Dependency Injection을
통해 처리함으로써 구현체의 변경에 따른 영향력을 최소화한다.
-
로깅, 트랜잭션, 예외처리 등과 같은 비기능 영역에 대한 코드가 업무 기능 개발 영역에서 분리될 수 있도록 함으로써,
개발자는 비즈니스 로직에만 집중하여 구현하도록 한다.
-
DB 접근 및 SQL 처리, 캐쉬, WAS와 연동 등과 같은 중요 기능에 대해 재사용 가능한 기술 공통 서비스를 제공
함으로써 보다발 빠르고 안정적인 개발을 지원한다.
-
속성 정의를 통해 Transaction을 선언적으로 일괄 제어할 수 있도록 지원함으로써, 개발이 간편해지며 안정적인
어플리케이션 운영이 가능하다.
-
Anframe Core 기반으로 어플리케이션을 개발할 때 코드 자동 생성, DB I/O 처리 등의 개발 지원 툴을 활용하여 개발 및 테스트를
수행함으로써 사전에 오류 발생을 감지할 수 있다.
Anyframe Core의 주요기능
Lightweight 컨테이너
Anyframe의 Lightweight 컨테이너는 순수 POJO(Plain Old Java Objects) 기반 개발을 지원하며,
순수 POJO 기반으로 설계/개발된 모듈들을 엮어서 해당 어플리케이션이 제대로 된 기능을 제공할 수
있도록 지원한다.
- POJO기반 개발 지원
순수 POJO 기반으로 어플리케이션 개발이 가능하도록 지원하다. 이것은 프레임워크로 인한 기본 설계와 상세설계가
이중으로 진행되는 것을 막고, 설계 모델과 구현체가 불일치 되는 것을 방지한다.
- Dependency Resolution 지원
어플리케이션 구성 모듈간 의존 관계를 처리하기 위한 방법을 제공한다. 대부분의 Lightweight 컨테이너들과 마찬가지로
DI(Dependency Injection)을 지원하며, 이외에 DL(Dependency Lookup)도 가능하다.
- Aspect Oriented Programming 지원
AOP는 어플리케이션 전체에 걸쳐 사용되나 쉽게 분리된 모듈로 작성하기 힘든 로깅, 인증, 권한체크,
DB 연동, 트랜잭션, 락킹, 에러처리 등과 같은 공통 기능을 재사용 가능하도록 컴포넌트화 할 수 있는 기법이다.
이러한 공통 기능은 Crosscutting Concerns라고 하며 해당 어플리케이션이 제공하는 비즈니스의 코드를
직접 건드리지 않고 모듈 사이 사이에 필요한 Crosscutting Concerns이 엮어져 동작되도록 한다.
- Life-cycle 관리
Lightweight 컨테이너는 정의된 모듈의 Life-cycle을 관리하여 해당 모듈들을 초기화시키고 종료시키는 역할을 수행함으로써 개발자가 비즈니스 로직에 집중하여 개발할 수 있게 된다.
- 신규 기능 추가 용이
XML 기반의 설정을 통해서 간단하게 컨테이너 기반 위에 신규 기능을 추가할 수 있도록 지원한다.
기술 공통 서비스
Anyframe은 자체 개발 또는 오픈 소스 활용 및 확장을 통해 어플리케이션 개발 시 용이하게 재사용 할
수 있는 다양한 기술 공통 서비스들을 제공한다.
이러한 Lightweight 컨테이너에서 동작 가능하도록 설계/개발되었으며, 이런 서비스들은 인터페이스 규약에 맞게
구현 클래스를 추가하거나 확장함으로써 해당 어플리케이션에 맞게 변경할 수 있다.
- DataSource 서비스
데이터베이스에 연결하여 Connection 객체를 전달해주는 서비스
- Query 서비스
쿼리문이나 객체의 입력만으로 데이터베이스 내에 저장된 데이터 조작을 가능하게 하는 서비스
- ID Generation 서비스
유일한 ID를 생성하기 위해 사용하는 서비스
- Properties 서비스
외부 파일이나 환경 정보의 key값을 통해 value에 접근할 수 있도록 해주는 서비스
- Transaction 서비스
Transaction 관리에 대하여 일관성 있는 추상화된 방법을 제공하는 서비스