반응형
1. 프로젝트 설정
- Spring Boot 2.7.1
- Lombok
- Spring Data JPA
- H2 Database (테스트용)
2. 엔티티 클래스
Java
@Entity
@Table(name = "approval_work")
public class ApprovalWork {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String content;
@Enumerated(EnumType.STRING)
private ApprovalStatus status;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "approval_work_approvers",
joinColumns = @JoinColumn(name = "approval_work_id"),
inverseJoinColumns = @JoinColumn(name = "approver_id"))
private Set<Approver> approvers;
// Getter, Setter 생략
}
코드를 사용할 때는 주의가 필요합니다.
3. 열거형 클래스 (ApprovalStatus)
4. Approver 엔티티 클래스
Java
@Entity
@Table(name = "approvers")
public class Approver {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String position;
// Getter, Setter 생략
}
코드를 사용할 때는 주의가 필요합니다.
5. ApprovalWorkRepository 인터페이스
Java
public interface ApprovalWorkRepository extends JpaRepository<ApprovalWork, Long> {
}
코드를 사용할 때는 주의가 필요합니다.
6. ApprovalWorkController 클래스
Java
@RestController
@RequestMapping("/api/approval-works")
public class ApprovalWorkController {
private final ApprovalWorkRepository approvalWorkRepository;
public ApprovalWorkController(ApprovalWorkRepository approvalWorkRepository) {
this.approvalWorkRepository = approvalWorkRepository;
}
@GetMapping
public List<ApprovalWork> getAllApprovalWorks() {
return approvalWorkRepository.findAll();
}
@GetMapping("/{id}")
public ApprovalWork getApprovalWorkById(@PathVariable Long id) {
return approvalWorkRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Approval work not found with id: " + id));
}
// 추가적인 API 엔드포인트 구현 가능 (예: 생성, 수정, 삭제)
}
코드를 사용할 때는 주의가 필요합니다.
7. 실행 방법
- Maven 또는 Gradle을 사용하여 프로젝트 빌드
- Spring Boot 애플리케이션 실행
- 다음 URL에 GET 요청을 보내면 모든 결재 업무 정보를 JSON 형식으로 확인 가능: http://localhost:8080/api/approval-works
- 특정 ID의 결재 업무 정보 확인: http://localhost:8080/api/approval-works/{id} (예: http://localhost:8080/api/approval-works/1)
참고:
- 이 예시 코드는 기본적인 기능만 구현합니다. 실제 서비스 구현 시에는 보안, 권한 관리, 오류 처리 등을 추가적으로 고려해야 합니다.
- H2 Database는 테스트용 DB입니다. 실제 서비스 환경에서는 MySQL, PostgreSQL 등을 사용하는 것이 좋습니다.
- Lombok 라이브러리를 사용하여 코드를 간결하게 작성했습니다.
추가 기능:
- 특정 조건에 맞는 결재 업무만 조회하는 필터링 기능
- 페이징 기능
- 검색 기능
- 결재 라인 정보 제공
- 결재 상태 변경 기능
- 첨부파일 처리