spring

Study/Next Step

[Next Step] ATDD, 클린 코드 with Spring 8기 3주차 리뷰

🎈 테스트와 의존 의존은 무조건 나쁜가에 대해서 이야기했다. 물론 답은 아니다. 의존이 없으려면 하나의 객체가 모든걸 다 처리해야하고, 변경 요구사항이 발생할 때 복잡해진다. 이를 위해서 적절한 범위로 책임을 나누는게 좋고, 불필요한 의존 대상은 정리해야한다. 🔎 테스트와 관련한 궁금증 1.통합 테스트인 경우 외부 라이브러리를 테스트해야 할까? 외부 라이브러리의 기능을 검증할 필요는 없다. 하지만, 그 부분을 활용하는 로직에 대한 검증은 필요할 수 있고, 외부 라이브러리는 변경할 수 없으니 실제 객체를 활용하는게 좋다. 의존성 테스트를 할때는 실제 외부 의존성을 사용하거나, Stub 혹은 Fake로 대체하자. ❤️ 3주차 후기 외부에 의존하는 인수 테스트 미션을 통해 외부 의존성에 대한 고민을 했던 것 ..

Study/우아한 테크 코스

MVC 패턴, 우아한 테코톡 내용 총 정리

MVC패턴 왜 쓰는 걸까? 우테코를 진행하면서, mvc 패턴에 대해서 막연히, 추상적으로 알고 있었던 부분에 대해서 우아한 테코톡을 보며 mvc의 대한 발표 내용을 정리해보았다. 개인적으로 영상을 보면서 1시간 이내의 짧은 시간으로 많은 부분에 대한 확신을 얻어갔던 것 같다. 제리 발표 내용 정리 1.Model 내부에 Controller와 View에 관련된 코드가 있으면 안된다. 2.View 내부에 Model의 코드만 있을 수 있고 Controller 코드가 있으면 안된다. 3.View가 Model로부터 데이터를 받을때는 사용자마다 다르게 보어주어야 하는 데이터에 대해서만 받아야 한다. 4.Controller는 model과 View에 의존해도 된다. 5.View가 Model로부터 데이터를 받을 때, 반드..

Error/트러블슈팅

[Trouble Shooting] Spring boot 중복 파일 업로드시 file not found에러 발생

오늘은 프로젝트를 진행하며 겪었던 파일 업로드 관련 에러를 말해보려고 한다. 프론트단에서 아래와 같은 여러개의 파일을 업로드를 구현했을때, 백엔드에서 동일한 파일 저장시 file not found에러가 발생하는 문제가 생겼다. (왜 저장이 안되는거지?) 파일1 파일2 파일3 파일4 const fileInput = document.querySelector('input[name="uploadFile"]'); const uploadButton = document.querySelector('#uploadButton'); uploadButton.addEventListener('click', function() { const files = fileInput.files; const formData = new Form..

Languege/Java & Spring

[JPA] DynamicUpdate 안되는 문제

현재 JPA를 사용하며 간단한 사이드 프로젝트를 만들고 있던 중 리펙토링을 진행하고 있는데 update시 DynamicUpdate가 걸려있는 entity를 update 할 때 문제가 발생하였습니다. 🎈 Paper Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) // new 클래스() 제한 @ToString(callSuper = true) @EqualsAndHashCode @Getter @Entity @DynamicInsert // null로 들어가야 하는 경우 대응(기본값) @DynamicUpdate // 변경한 필드만 대응 @Table(name = "tbl_paper") public class Paper { @Id @GeneratedValue(st..

Study

[김영한 스프링 강의 1] 회원 관리 예제

[요약] 1.비즈니스 요구사항을 정의 -데이터 : 회원 ID, 이름 기능 : 회원 등록, 조회 2.회원 도메인과 리포지토리 만들기 - 도메인은 Member 클래스를 정의 - 리포지토리는 Interface와 Class파일로 나뉘는데 전자는 기능의 정의를 통해 상속받을 수 있도록 하기 위함 후자는 실제 기능을 구현한다. ex) 아래와 같음 [인터페이스] Member save(Member member); [클래스] public Member save(Member member) { member.setId(++sequence); store.put(member.getId(), member); return member; } 3.테스트 케이스 작성 테스트 케이스 작성시 @Test 어노테이션을 사용한다. 테스트 하려는 r..

Languege/Java & Spring

AOP란?

Spring의 특징 중 하나인 AOP란 무엇일까요? AOP는 Aspect Oriented Programming으로 관점지향 프로그램을 뜻합니다. 스프링 어플리케이션은 대부분 특별한 경우를 제외하고는 MVC 웹앱에서 Web Layer, Business Layer, Data Layer로 정의합니다. -Web Layer : Rest API를 제공, Client 중심의 로직 적용 -Business Layer : 내부 정책에 따른 로직을 개발하며, 주로 해당 부분을 개발 -Data Layer : DB 및 외부와 연동을 처리 횡단 관심 A,B,C사에는 각각 기능1을 통하여 인코딩을 하여 보내고 B,C사에는 기능4를 통하여 암호화를 한다던지 등의 공통적이고 반복적인 기능(메소드,반복되는 로직)들을 한곳에 모아서 관리..

mntdev
'spring' 태그의 글 목록