공통기반
공통기반 서비스는 실행환경 서비스 간에 공통적으로 사용되는 기능을 제공한다.
Server Security
Server Security Service는 Spring Security를 확장하여 사용자 인증과 권한 관리를 DB 기반으로 처리하며, 세션 관리도 지원한다. Spring Security는 인증, 권한 처리, 웹 및 서비스 레이어 보안을 제공하는 강력한 솔루션이지만 사용자 관리와 역할 관리에서 일부 취약점을 가진다. 표준프레임워크 3.0에서는 설정 간소화 기능과 Map 기반 UserDetails로 손쉬운 사용자 정보 관리가 가능해졌으며, 업그레이드 가이드를 통해 최신 보안 기능을 적용할 수 있다.
Session 방식 접근제어 권한설정
표준프레임워크 3.9부터 Session 방식의 접근제어 권한관리를 설정할 수 있으며, 이를 위해 XML 선언 및 SQL 쿼리를 포함한 기본 설정이 필요하다. 롤 권한 변경 시 서버 재기동 없이 AuthorityResourceMetadata
의 reload()
메소드를 호출하여 설정을 적용할 수 있다.
Scheduling 서비스
Scheduling 서비스는 주기적 작업을 관리하는 기능으로, Quartz 스케줄러와 Spring을 통합하여 사용된다. Quartz는 작업(Job), 스케줄(Trigger)을 분리해 유연성을 제공하며, Spring에서 JobDetailBean과 MethodInvokingJobDetailFactoryBean을 통해 작업을 생성하고, SimpleTriggerBean과 CronTriggerBean으로 작업을 스케줄링한다.
Logging
전자정부 표준프레임워크 3.0부터 SLF4J를 도입하여 다양한 로깅 프레임워크와 연계하며, Log4j 2를 기본 로깅 구현체로 사용한다. 로깅 서비스는 시스템 상태를 기록하고 관리할 수 있지만, 성능 오버헤드를 줄이기 위한 메커니즘이 필요하다. System.out.println() 대신 SLF4J와 Log4j 2를 사용한 로깅이 권장된다.
Id Generation 서비스
ID Generation 서비스는 UUID, Sequence, Table 기반의 고유 ID 생성을 지원하며, UUID는 MAC/IP 주소 또는 랜덤 방식으로, Sequence는 DB 시퀀스를 사용해 ID를 생성한다. Table ID Generation은 별도의 테이블을 사용해 ID를 관리하며, Strategy 설정을 통해 ID 생성 규칙을 지정할 수 있다. 다양한 설정을 통해 ID를 쉽게 생성하고 관리할 수 있도록 지원한다.
Property
Property는 시스템 설정 정보를 외부에서 관리하여 유연성과 확장성을 높이는 기능으로, 동적 갱신이 가능한 Property Service와 정적 설정인 Property Source를 제공한다.
Environment
표준프레임워크 3.0부터 Spring 3.1의 Environment 인터페이스를 통해 Profile과 Property에 접근할 수 있다.
Cache Service
전자정부 프레임워크에서 EhCache를 사용한 캐시 서비스를 제공하며, Spring 3.1 이전에는 EhCache의 CacheManager를 직접 사용하고 이후 버전에서는 CacheManager Abstraction으로 캐시 사용을 유연하게 지원한다.
Marshalling/Unmarshallig 서비스
Marshalling/Unmarshalling 서비스는 Java 객체를 XML로 변환(Marshalling)하거나, XML을 Java 객체로 변환(Unmarshalling)하는 기술이다. Spring은 이를 위해 다양한 OXM 툴(JAXB, Castor, XMLBeans 등)을 지원하며, 이 기능을 활용해 객체와 XML 간의 데이터 매핑을 쉽게 처리할 수 있다. Castor와 XMLBeans를 이용한 샘플 코드는 각각 XML 문서로 데이터를 저장하고 다시 객체로 변환하는 과정으로 구성되어 있다.
XML Manipulation Service
XML Manipulation 서비스는 XML 문서의 생성, 읽기, 쓰기, 수정 등을 위한 기능을 제공하며, DOM과 SAX 두 가지 파서 방식을 지원한다. DOM은 트리 구조로 XML 문서를 다루고, SAX는 이벤트 기반으로 처리한다. 이 서비스를 통해 XML 문서의 요소 추가, 삭제, 수정, XPath 검색 및 Validation 검사 등의 작업을 수행할 수 있다.
Object Pooling Service
Object Pooling 서비스는 객체를 미리 생성해 Pool에서 재사용하여 성능을 향상시키는 방식이다. ObjectPool 인터페이스는 객체 할당과 반환을 처리하며, PooledObjectFactory는 객체의 생성, 유효성 검사, 재초기화 등의 생애주기 관리를 담당한다. BaseObjectPool과 BasePooledObjectFactory는 이들을 추상적으로 구현한 클래스들로, 다양한 객체 풀링을 지원한다.
Crypto
Encryption/Decryption과 crypto 간소화를 crypto라는 목록에 넣기 위해 생성
FTP Service
Apache Commons Net을 사용하여 FTP 서비스를 제공하며, FTP 클라이언트를 통해 파일 업로드, 다운로드, 삭제, 디렉토리 생성 등의 기능을 구현할 수 있다. FTP 사용 예제 및 파일 전송 설정 방법을 함께 제공한다.
Mail 서비스
Jakarta Commons Email API를 사용하여 메일 발송을 쉽게 처리하며, 텍스트 메일, 파일 첨부, URL 첨부, HTML 메일, 인증 처리 등의 기능을 제공한다. 이를 통해 간단한 코드로 다양한 형식의 메일 발송을 구현할 수 있다.
Compress/Decompress Service
전자정부 표준프레임워크는 Jakarta Commons Compress를 통해 다양한 압축 방식(tar, zip, bzip2 등)을 지원하는 편리한 API를 제공한다.
File Upload/Download 서비스
Commons FileUpload를 사용해 파일 업로드 API를 제공하며, 멀티 파일 업로드 문제와 해결 방법을 설명한다.
File Handling
Excel 다운로드를 위한 파일 처리 서비스를 적용한 예제 코드와 설정을 제공한다.
Excel Service
Excel 서비스는 Apache POI를 사용해 Excel 파일 다운로드 및 업로드를 지원하며, 3.0 버전에서는 메소드 리팩토링과 MyBatis 지원을 추가했다.
String Util Service
EgovStringUtil, EgovNumericUtil, EgovDateUtil, EgovObjectUtil 등의 서비스는 문자열, 숫자, 날짜, 객체 생성 등을 쉽게 다룰 수 있도록 다양한 기능을 제공한다. 이를 통해 패턴 매칭, 데이터 형식 변환, 숫자 계산, 날짜 계산, 객체 인스턴스화 등의 작업을 효율적으로 수행할 수 있다.