본문 바로가기

전체 글160

2023-11-08-TIL | Spring 애자일 소프트웨어 개발 선언 우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고있다. 이 작업을 통해 우리는 다음을 가치 있게 여기게 되었다: 공정과 도구보다 개인과 상호작용을 포괄적인 문서보다 작동하는 소프트웨어를 계약 협상보다 고객과의 협력을 계획을 따르기보다 변화에 대응하기를 가치 있게 여긴다. 이 말은, 왼쪽에 있는 것들도 가치가 있지만, 우리는 오른쪽에 있는 것들에 더 높은 가치를 둔다는 것이다. 객체지향적으로 리팩토링 요구사항의 변경 이전 노트에 이어서 새로운 할인 정책을 확장해보자. 악덕 기획자: 서비스 오픈 직전에 할인 정책을 지금처럼 고정 금액 할인이 아니라 좀 더 합리적인 주문 금액당 할인하는 정률(%) 할인으로 변경하고 싶어요... 2023. 11. 9.
2023-11-06-TIL | Spring 이번 노트부터는 Spring core만을 사용하여(즉, 순수 자바만을 이용하여) 프로젝트를 만들어 갈 것이다. SpringBoot 설정은 아래와 같이 어떠한 Dependencies도 들어가지 않는다. 만약 스프링 부트 3.0을 선택하려면, 1. Java 17 이상을 사용해야 한다. 2. 오라클과 자바 라이센스 문제로 모든 javax 패키지 이름을 jakarta로 변경해야 한다. 비즈니스 요구사항과 설계 요구사항 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 요구사항을 보면 회원 데이터, 할인 정책 같은 부분은 지금 결정하기 어려운 부분이다. 그렇다고 이런 정책이 결정될 때까지 개발.. 2023. 11. 7.
2023-11-04-TIL | Spring 모든 메서드의 실행 시간을 측정하는 기능이 필요하다면? 공통 로직이 모든 메서드에 들어가야만 한다. try-finally 등의 구문을 써야하기 때문에, 메서드로 따로 뺄 수 있는 로직도 아니며, 로직의 중간에 삽입되어야 한다. → 핵심 비즈니스 로직과 공통 관심 사항이 하나로 섞여서 유지보수하기 어려워진다. 하지만 이러한 기능은 핵심 비즈니스 로직(핵심 관심 사항; core concern)이 아니다. == 공통 관심 사항(cross-cutting concern) 이때 핵심 관심 사항과 공통 관심 사항을 분리하여, 공통 관심 사항을 구현하여 처리하는 AOP를 쓰면, 개발자는 핵심 비즈니스 로직의 구현과 유지보수에만 집중할 수 있게 된다. AOP Aspect-Oriented Programming @Aspec.. 2023. 11. 4.
2023-11-01-TIL | Spring 이 노트에서는 기존의 반복되는 코드 부분 뿐만 아니라, 쿼리문조차도 필요없는 JPA 방식에 대해 다룬다. JPA를 통해 SQL보다는 객체 중심의 설계가 가능해진다. JPA Java Persistence API의 약자 'Persistence'는 데이터나 상태가 지속되거나 영구적으로 유지되는 특성을 나타낸다. 프로그래밍 컨텍스트에서는 'persistence'가 데이터베이스나 파일 시스템과 같은 저장 매체에 데이터를 저장하여 프로그램이 종료되거나 시스템이 재부팅되더라도 데이터가 유지되도록 하는 능력을 의미한다. 예를 들어, 데이터베이스에서 데이터를 영구적으로 저장하면 이 데이터는 persistence를 가지고 있다고 말할 수 있다. Java Persistence API(JPA)도 이러한 persistence를.. 2023. 11. 3.