솔적솔적

정보처리기사 실기 08단원 - 서버 프로그램 구현 본문

정보처리기사

정보처리기사 실기 08단원 - 서버 프로그램 구현

솔솔봄향기 2022. 2. 20. 01:41

목차

01. 개발환경 구축

02. 공통 모듈 구현

03. 서버 프로그램 구현

04. 배치 프로그램 구현

 

01. 개발환경 구축

[1] 개발환경 구축

(1) 개발환경 구축의 개념

- 개발환경 구성 시 구현될 시스템 요구사항의 명확한 이해가 필요하다.

- 개발 도구와 서버의 선정이 이루어져야하고 개발에 사용되는 도구들의 사용편의성과 성능, 라이선스를 확인한다.

 

(2) 개발 도구의 분류

- 개발환경 구성을 위한 도구는 아래와 같이 크게 4가지로 분류할 수 있다.

 

개발 도구 분류

구현 도구 테스트 도구 형상관리 도구 빌드 도구

 

개발 도구의 분류

구분 설명
빌드 도구 - 작성한 코드의 빌드 및 배포를 수행하는 도구
- 각각의구성요소와 모듈에 대한 의존성 관리를 지원
구현 도구 - 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구
- 프로그램을 개발할 때 가장 많이 사용되는 도구
테스트 도구 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 가능
형상 관리 도구 - 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한도구

 

(3) 개발환경 구성요소

1) 서버 하드웨어 개발환경

- 프로젝트 구성에 따라 웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버, 파일서버로 구분한다.

 

서버하드웨어 개발환경

구분 설명
웹 서버 - HTTP를 이용한요청/ 응답을 처리
- 웹 상의 정적 콘텐츠 처리
- Apache 웹 서버, IIS 웹 서버, Google Web Server, Nginx 등 존재
웹 애플리케이션 서버 - 동적 콘텐츠를 처리하기 위해 사용
- 주요 제품으로 Tomcat, Weblogic, Jeus, Resin 등 존재
데이터베이스 서버 - 데이터 수집, 저장을 위한 용도로 사용
- 연계되는 주요 DBMS로 MySql, Oracle, MS-SQL, DB2 등 존재
파일 서버 - 파일 저장 하드웨어로 물리 저장장치를 활용한 서버
- 대용량 HDD, SSD 등의 장치가존재

 

2) 클라이언트 하드웨어 개발환경

- 서버 개발환경에서제공된 서비스를 사용하기 위해 UI를 제공한다.

- 클라이언트 프로그램, 웹 브라우저, 모바일 앱, 모바일 웹으로 구분한다.

 

클라이언트 하드웨어 개발환경

구분 설명
클라이언트 프로그램 - 설치를 통해 사용자와 커뮤니케이션하는 프로그램
- Visual Basic, C#, Delphi 등으로 개발되어 사용
웹 브라우저 - 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답 시 브라우저를 통해 사용자와 커뮤니케이션
- 일반적인 형태의 웹 사이트가 해당
모바일 앱 - 모바일 디바이스에 설치되어 활용되는 애플리케이션
- 앱 스토어, 안드로이드 마켓 등을 통해 다운로드 가능
모바일 웹 - 웹 브라우저와 동일한 형태로 모바일 상 웹 브라우저를 통해 서비스를 제공
- 모바일에 최적화되어 제공되는 웹 사이트가 해당

 

(2) 소프르퉤어 개발환경

- 개발을 위한 기본적인 소프트웨어 개발환경을 선택 및 구성한다

- 큰 틀에서 프로젝트 요구사항에 부합한 운영체제, 미들웨어 , 데이터베이스 시스템을 선정한다.

 

개발환경 구성분류

운영체제 미들웨어 DBMS

운영체제 : Windows, Unix, Linux

미들웨어 : Weblogic, Websphere, Jeus, Tomcat

DBMS : Oracle, MySQL, MS-SQL, PostgreSQL

 

(3) 형상관리(Configuration Management)

1) 형상 관리의 개념

- 소프트웨어 개발을위한전체 과정에서 발생하는 모든 항목 변경 사항을 관리학 위한 활동

- SW 생명 주기 동안 형상 관리를 통해 산출물을 체계적으로 관리학여 SW의 가시성, 추적성, 무결성 등의 품질 보증을 보장할 수 있다.

 

2) 형상 관리의 목적

- 프로젝트 생명주기 동안 제품의 무결성과 변경에 대한 추적성을 확보가능

- 프로젝트변경이 발생 되었을 때 처리하는 매커니즘을 제공

- 대표적인 메커니즘으로 형상 관리 대상 파악, 베이스라인 지정, 형상관리, 접근제어 등이 있다.

 

3) 형상 관리의 절차

- 다음과 같은 절차를 통해 품질 보증의 목적으로 수행된다.

 

형상 관리의 절차

절차 설명
형상 식별 - 형상 관리 대상을 정의 및 식별하는 활동
형상 통제 - 베이스라인에 대한 관리 및 형상 통제 수행가능
형상 감사 - 베이스라인 변경 시 요구사항과 일치 여부 검토
형상 기록 소프트웨어 형상 및 변경관리에 대한 각종 수행결과를 기록
- 형상결과 보고서 작성

 

4) 소프트웨어 형상관리 도구 유형

초기의 소프트웨어 형상 관리 도구는 공유 폴더 방식을 많이 활용하였지만, 

촤ㅣ근에는 클라이언트/서버 방식과 저장소 방식이 많이 활용된다.

 

소프트웨어 형상관리 도구 유형

형상 관리 도구 유형 설명
공유 폴더 방식(RCS, SCCS) - 매일 개발이 완료된 파일은약속된 위치의 공유 폴더에 복사하는방식
클라이언트/서버 방식(CVS, SVN) - 중앙에 버전 관리 시스템을 항시 동작하는 방식
분산 저장소 방식(Git 등) - 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식

 

5) 소프트웨어 형상 관리 도구별 특징

- 현재 국내 개별 프로젝트에서는 SVN을 가장 많이 사용하고 있으나, 전 세계적으로는 오픈 소스 기반의 소프트웨어 형상 관리 도구인 Git을 가장 많이 사용

 

소프트웨어 형상관리 도구별 특징

형상 관리 도구 설명
CVS - 서버와 클라이언트로 구성
- 다수 인원이 동시에 범용적인 운영체제로 접근 가능한 형상관리도구
SVN - 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구
- 저장소를 만들어 그곳에 소스를 저장해 소스 중복이나 여러 문제를 해결하기 위한 도구
RCS - CVS와 달리 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일 잠금 방식으로 형상ㅇ르고나리하는 도구
BitKeeper - SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른속도를 내도록 개발된 형상관리 도구
Git - Git의 속도에 중점을둔 분산형 버전관리 시스템이며, 대형 프로젝트에서 효과적으로 활용
- 로컬 저장소에서 작업이 이루어져 매우 빠른 응답을 받을 수 있음
Clear Case - 복수 서버, 복수 클라이언트 구조이며 서버가 부족할 때 필요한 서버를 하나씩 추가하여 확장성을 기할 수 있음

 

6) 소프트웨어 형상 관리 도구 사용 시 유의사항

 

소프트웨어 형상 관리 도구 사용 시 유의사항

유의사항 설명
버전에 대한 쉬운 정보 접근성 - 형상 관리 지침에 의한 버번에 대한 정보를 언제든지 접근가능
- 프로젝트 단위 접근이든, 파일 단위 접근이든 간에 개발자가 원할 때 원하는 모습을 다시 구성할 수 있어야함
불필요한 사용자에 대한 접근 제어 - 제품 소프트웨어 개발자, 배포자 이외의 불필요한 사용자가 소스를 슈ㅜ정할 수 없도록해야 함
동일 프로젝트에 대한 동시 사용성 - 동일한 프로젝트에 대해서 여러 개발자가 동시에 개발할 수 있어야함
빠른 오류 복구 - 에러 발생 시 최대한 빠른 시간 내에 복구가 가능해야 함
- 과거 버전의 소스를 가지고 신속하게 원복할 수 있어야함

 

(4) 개발환경 구축 절차

- 통합 개발환경을 구축하기 위한 절차를 명시한다

 

개발환경 구축 절차

절차 설명
통합 개발 
환경 설치
- 통합 개발환경 도구로 Eclipse, IntelliJ, Android Studio 등 존재
- 이클립스는 오픈 소스로 자바 환경에서 보편적으로 사용 중
형상 관리
도구 설치
- 형상 관리 도구로는 Git, SVN, CVS 등이 있으며 현재는 깃허브 등을 통해 Git이 각광
- Git 설치 후 사용자 정보 설정 필요
빌드 
도구 설치
- 빌드 도구로 Ant, Maven, Gradle등이 있음
- Maven Repository기반의 Maven, Android Studio에 탑재된 Gradle이 자주 사용

 

형상 관리 도구(Git, SVN)주요 명령어

실행 동작 Git SVN
저장소 생성 git init svn import
저장소 복제 git clone svn checkout
커밋 git commit svn commit
변경 내용 확인 git diff svn diff
추가 git add svn add
이동/삭제 git mv / git rm svn mv / svn rm
브랜치 생성 git branch svn copy
병합 git merge svn merge
원격 저장소 반영 git push svn commit
설정 확인 git config svn info

02. 공통 모듈 구현

[1] 공통 모듈 구현

(1) 공통 모듈 구현의 개념

1) 모듈의 개념

- 모듈은 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체이다.

- 모들화를 통해 분리된시스템의 각 기능들로 서브 프로그램, 서브 루틴, 소프트웨어 내의 단위 프로그램, 작업 단위 등과 같은 의미로 사용된다.

 

2) 모듈의 특징

- 각각의 모듈은 상대적으로 독립성을 가지고 있다.

- 모듈은 단독으로 컴파일할 수 있으며 재사용가능

- 모듈의 독립성은 결합도와 응집도에 의해 측정, 독립성을높이려면 모듈의 결합도는 약하게 응집도는강하게 모듈의 크기는 작게 만들어야한다.

 

3) 모듈화의 개념 및 기법

- 모듈화는 소프트웨어의 성능을향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법이다.

 

모듈화 기법

기법 설명
루틴 - 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임
메인루틴 - 프로그램의 주요한 부분이며, 전제의 개략적인 동작 절차를 표시하도록 만들어진 루틴
- 메인 루틴은 서브루틴을 호출
서브루틴 - 메인 루틴에 의해 필요할 때마다 호출되는 루틴

4) 공통 모듈 구현의 개념

- 소프트웨어 개발에 있어 기능을 분할하고 추상화하여 성능을 향상시키고 유지보수를 효과적으로 하기 위한 공통 컴포넌트 구현 기법

- 인터페이스모듈, 데이터베이스 접근 모듈 등 필요한 공통 모듈을 구현

- 모듈 간의 결합도는 줄이고 응집도는 높인 공통 모듈 구현을 권장

 

(2) 소프트웨어 모듈 응집도

1) 응집도(Cohesion)의 개념

- 응집도는 모듈의 독립성을 나타내는 정도, 모듈 내부 구성 요소 간 연관 정도

- 하나의 모듈은 하나의 기능을 수행할수록 응집도가 높다.

 

2) 응집도의 유형

우연적, 논리적, 시간적, 절차적, 통신적, 순차적, 기능적 응집도 순서대로 응집도가 높아진다.

유형 설명
Conincidental Cohesion 모듈 내부의 각 구성요소가 연관이 없을 경우의 응집도
Logical Cohesion 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
Temporal Cohesion 연관된 기능이라기보다는 특정 시간에 처리되어야하는 활동들을 한 모듈에서 처리할 경우의 응집도
Procedural Cohesion 모듈이 다수의 관련 기능을 가질 대 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
Communication Cohesion 동일한 입력과 출력을 사용하여다른 기능을 수행하는 활동들이 있을 경우의 응집도
SequentialCohesion 모듈 내에서 한활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도
Functional Cohesion 모듈 내부의 모든 기능이 단일한 목적을위해 수행되는 경우의 응집도

- 응집도가 높을수록 품질이 좋아진다.

 

(3) 소프트웨어 모듈 결합도

1) 결합도(Coupling)의 개념

- 모듈 내부가 아닌외부의 모듈과의 연관도 또는 모듈간의 상호의존성

- 소프트웨어 구조에서 모듈간의 관련성을 측정하는 척도

 

2) 결합도의 유형

- 결합도의 유형은 내용, 공통, 외부, 제어, 스탬프, 자료 결합도 순으로 결합도가 낮아진다.

유형 설명
Content Coupling 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서사용하는 경우의 결합도
Common Coupling 파라미터가 아닌 다른모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 참조하고 전역 변수를 갱신하는식으로 상호작용하는 경우의 결합도
External Coupling 단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야한다는 제어요소가 전달되는 경우의 결합도
Control Coupling 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
Stamp Coupling 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도
Data Coupling 모듈 간의 인터페이스 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도

- 결합도가 낮을수록 품질이 좋아진다.

 

(4) 공통 모듈 구현대상

- 공통 모듈은 화면 모듈, 화면에서 입력받은 데이터 처리를 위한 서비스 컴포넌트, 비즈니스 트랜잭션 컴포넌트 등이 있다.

- 통합 구현에서 공통모듈 구현은 상세설계된 공통 모듈, 환경변수를 실제 프로그래밍 언어로 구현하다.

 

(5) 공통 모듈 구현 절차

- 공통 모듈은 DTO/VO → SQL → DAO → Service → Controller →화면 구현 순으로 진행된다.

- 공통 모듈의 구현을 위한 공통 모둘 구현 절차에 MVC 패턴을 사용한다.

 

(6) 팬인(Fan-In) 및 팬 아웃(Fan-Out)

1) 팬인(Fan-In) 및 팬아웃(Fan-Out) 개념

- 소프트웨어의 구성요소인 모듈은 계층적으로 분석하기 위해서 팬인, 팬아웃을 활용한다

- 팬인과 팬아웃 분석을 통하여 시스템의 복잡도를 측정할 수 있다.

- 시스템 복잡도를 최적화 하기 위해서는 팬인은 높게, 팬아웃은 낮게 설계해야한다.

 

[2] 공통 모듈 테스트

(1) 공통 모듈 테스트의 개념

- 공통 모듈 테스트를 위해 IDE도구를 활용하여 개별 공통모듈에 대한 디버깅을 수행한다.

- 공통 모듈 테스트는 화이트 기법을 활용한다.

- 대표적인 단위테스트 도구인 JUnit을 활용하여 테스트 코드를 구현한다.

 

(2) 공통 모둘 테스트의 종류

 

공통 모듈 테스트의 종류

종류 설명
화이트박스 테스트 - 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트 방식
메서드기반 테스트 - 공통 모듈의 외부에공개된 메서드 기반의 테스트
화면 기반 테스트 - 사용자용 화면이 있는 겨우, 각각의 화면단위로 단위모듈을 개발 후에 화면에 직접 데이터를 입력하여 테스트를 수행
테스트 드라이버(Driver) / 테스트 스텁(Stub) - 기능을 테스트할 수 잇는 화면 또는 하위 모듈이 구현되지 않은 경우 테스트 드라이버, 테스트 스텁을 통해 테스트를 수행

 

(3) 공통 모듈 테스트 구현

- 테스트 코드를 쉽게 작성하고 자동화하기 위해 JUnit을 사용한다.

 

공통 모듈 테스트 구현 절차

단계 세부 내역
JUnit 생성 소스 코드 선택
JUnit 코드 생성 실제 메서드를 호출해 결과와 비교하는코드를작성

import org.junit.Test;
public class CalTest{
  @Test
  public void testSum(){
    Calculator calc = new Calculator();
    int result = calc.sum(10, 10);
    assertEquals(20, result);
  }
}
JUnit 실행 테스트 코드 작성완료 시 테스트를 실행해 결과 확인
JUnit 결과 확인 테스트 코드 결과를 통해 코드 이상 유무 확인

 

JUnit주요 어노테이션

어노테이션 설명
@Test 테스트 메서드를 선언
@Before @Test 실행 전 실행되는 코드를 작성
@After @Test 실행 후 실행되는 코드를 작성
@BeforeClass @Test 메서드보다 먼저 딱 한 번 수행되어야 할 경우 지정
@AfterClass 단위 테스트 맨 마지막에 수행되어야 할 경우 지정
@Ignore 테스트에서 제외할 메서드 선언

 

Assert 메서드 설명

문법 설명
assertEquals(a, b); 객체 a와 b가 일치함을 확인
assertEquals(a, b, c); 객체 a와 b가 일치함을 확인
a: 예상값, b : 결괏값, c: 오차범위 
assertSame(a, b); 객체 a와 b가 같은 객체임을 확인
assertTrue(a); 조건 a가 참인지 여부를 확인
assertNotNull(a); 객체 a가 null이 아님을 확인
assertArrayEquals(a, b); 배열 a와 b가 일치함을 확인

 

03. 서버 프로그램 구현

[1] 서버 프로그램 구현

(1) 서버 프로그램 구현의 개념

- 서버 프로그램 구현은 업무 프로세스를 기반으로 개발언어와 도구를 이용해 서버에서서비스 제공에 필요한 기능을구현하는 활동

- 웹 서비스 기반의 회원 정보를 조회하고 등록하는 서버 프로그램을 차례대로 구현한다.

 

(2) 서버 프로그램 구현 절차

- 서버 프로그램은 백엔드와 프론트엔드를 구분하여 구현한다.

 

(3) 서버 프로그램 세부 구현

- 서버 프로그램의 VO, SQL문, DAO, Service, Controller를 순서대로 구현한다.

 

1) DTO(Data Transfer Object) , VO(Value Object) 구현

화면에서 전달받은 회원정보를 데이터베이스에 저장하는 객체를 구현한다.

public class JoinVO{

    String id; //회원아이디
    String pw; //회원비밀번호
    String name; //회원이름
    
    public void setId(String id){ // 회원 아이디 설정 setter
    	this.id = Id;
    }
    
    public String getId(){ //회원 아이디 getter
    	return id;
    }
}

2) SQL문 구현

1) 데이터베이스테이블 정의 및 생성

- VO에서 정의한 객체 정보에 맞춰 정보가 저장될 테이블 정보를 생성한다.

Create table CUSTOMER(
ID varchar(20) NOT NULL COMMENT '아이디',
PW varchar(20) COMMENT '패스워드',
NAME VARCHAR(10) COMMENT '이름',
primarty key(ID)
) COMMENT '회원정보';

 

2) Mybatis XML구현

- 회원 이름 검색 및 입력을 위한 SQL문을 Mybatis XML로 구현한다.

 

3) 데이터 접근 객체(DAO; Data Access Object) 구현

- DAO를 통해 SQL을 구현한 XML id를 호출하여 조작을 수행한다.

public class JoinDAO{
//회원가입 데이터 접근 오브젝트 프로토타입
public int selectJoin(JoinVO vo) throws Exception{
 reutrn sqlSession.selection("com.soojebi.sql.selectJoin",. vo);
 //회원가입 데이터 조회 프로토타입
 
  }
 
public void insertJoin(JoinVo vo){
 sqlSession.insertJoin("com.soojebi.sql.insertJoin", vo);
 //회원가입 데이터 입력
}
{

 

4) 서비스(Service) 클래스 구현

- 회원 등록응 위해 JoinDAO를 호출하는 JoinService를 선언 및 구현한다.

@Service
public class JoinService implements IMemberService{
	@Autowired
    JoinDAL dao;
    
    @Override
    public void insertJoin(JoinVo join){
    JoinVO member = dao.selectJoin(join); //회원 조회 후 결과 저장
    dao.insertJoin(member); //회원등록
    
    }
}

 

 

5) 컨트롤러(Controller) 클래스 구현

-핵심이 되는 컨트롤러에 회원가입 단위 모듈의메인 로직을 구현한다.

public class CreateController extends HttpServlet{
	@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse res)
    					throws ServletException, IOException{
                        
                        JoinVO vo = new JoinVO();
                        JoinDAO dao = new JoinDAO();
                        PrintWriter out = res.getWriter();
                        String result;
                        
                        vo.setId(req.getParameter("id"));
                        vo.setId(req.getParameter("pw"));
                        vo.setId(req.getParameter("name"));
                        
                        SimpleDataFormat sdf = new SimpleDateFormat("yyyymmdd");
                        Date date = null;
                        
                        try{
                        //입력값을 date포맷으로 변경
                        date = sdf.parse(req.getParameter("year")+"-"+req.getParameter("month")
                        +"-"+req.getParameter("day"));
                        }
                        catch(ParesException e){
                        	e.printStackTrace();
                        }                        
                        }
}

 

 

6) 입/출력 검증(Validation) 로직 구현

- 회원가입이 성공/실패 시 다른 메세지를 호출하는 검증 로직을 구현한다.

public class CreateController extends HttpServlet{
	@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse res)
    					throws ServletException, IOException{
                        
                        result = dao.insertJoin(req);
                        if(result =="success"){
                        System.out.println("회원가입 성공"); //회원가입 성공 시 메시지 출력
                        }
                        else{
                        System.out.println("회원가입 실패"); //나머지 조건 실패 메시지 출력
                        }
                        }
}

04. 배치 프로그램

[1] 배치 프로그램

(1) 배치 프로그램(Batch Program)의 개념

- 배치 프로그램은 사용자와으 ㅣ상호작용 없이 이렬ㄴ의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진규칙에 따라 일괄 처리하는 방법이다.

 

(2) Batch Program의 유형

- 정기 배치 : 사전에 정의해 둔 조건 충족 시 자동으로 실행

- 이벤트 배치 : 사용자의 명시적 요구가 있을때 마다 실행

- 정기 배치 : 정해진 시점(주로 야간)에 정기적으로 실행

 

(3) 배치 스케줄러

1) 배치 스케줄러의 개념

일괄처리(Batch procession)를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구이다.

 

2) 배치 스케줄러의 종류

종류 설명
Spring Batch 스프링 프레임워크의 DI, AOP, 서비스 추상화 등 스프링 프페임 워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를제공하는 스케줄러 배치 애플리케이션
Quartz Scheduler 스프링 프레임워크에 플러그인되어 수행하는 작업(Job)과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈소스 기반 스케줄러

 

3) Cron 표현식

- 스케줄러를 실행시키기 위해 작업이 실행되는 시간 및 주기 등을 설정하게되는데 크론 표현식을 통해 배치 수행시간을 설정한다.

 

Cron 표현식 특수문자 의미

기호 의미
* 모든 수
? 해당 항목을 미사용
- 기간 설정
, 특정 기간 설정
/ 시작시간과 반복간격 설정
L 마지막 기간에 동작
W 가장 가까운 평일에 동작
# 몇 번째 주, 요일 설정

 

Cron 표현식 특수문자 의미

0 0 12 ** ? 매일 12시에 실행
0 15 10 **? 매일 오전 10시 15분에 실행
0 * 14 ** ? 오후 14시에서 15시 사이에 매 분마다 실행
0 0/5 14,20 ** ? 매일 14시에 시작하여 14시 55분까지 5분마다 실행, 20시 정각부터 20시 55분마다 실행
0 0 20 ? * MON-FRI 매주 월요일과 금요일 사이 20시에 실행
0 15 10 15 * ? 매달 15일 10시 15분에 실행
0 15 10 L * ? 매달 마지막 날 10시 15분에 실행
0 15 10 ? * 6L 2020-2021 2020년부터 2021년 매달 마지막 금요일 10시 15분에 실행
0 15 10 15 * ? 매달 15일 10시 15분에 실행
0 11 11 1 1 ? 1월 1일 11시 11분마다 실행

 

(4) 배치 프로그램 설계

1) 배치 프로그램 관리대장 확인

애플리케이션 설계를 기반으로 한 프로그램 관리 대장을 읽고 구현해야 할 배치 프로그램 기능을 확인한다.

 

2) 배치 설계서 확인

- 프로그램 관리 대장의 ID와 일치하는 배치 설계서를 확인한다.

배치 설계서를 통해 작업 내역을 참고하여 배치 프로그램을 구현한다.

 

(5) 배치 프로그램 작성

1) DTO(Data Transfer Object), VO(Value Object) 구현

전달하려는 푸시 메시지 내용을 데이터베이스에 저장할 갤체를 구현한다.

public class PushMessageVO{
	//푸시 발송마스터
    private String pushSeqCd;   //푸시 순차코드
    private String sendSubject; //발송 제목
    private String sendContent; //발송 내용
    private Stirng sndrEmpNo;   //발신자 사원번호
    private sndrNm;             //발신자 이름
    private String arrayEmpNo;  //사원 리스트
    private String getPushSeqCd();{
    	return pushSeqCd;
    }
    
    public void setPushSeqCd(String pushSeqCd){
    this.pushSeqCd = pushSeqCd;}
}

}

 

2) SQL문 구현

 

3) 데이터 접근 객체(DAO : Data Access Object) 구현

 

4) 서비스(Service) 클래스 구현

푸시발송 대상조회를 위해 PushMessageDAO
를 호출하는 PushServixce를 선언 및 구현한다.

 

5) 스케줄러 등록

- 작성한 배치 프로그램을 정기적으로 실행하는 쿼츠 스케줄러를등록한다.

 

[출처] 수제비 2021...! 정보처리기사 실기