본문 바로가기

Back-end/Spring Boot25

[SpringBoot] 스프링부트 이해하기- 4편 Reflection(feat. 동적 로딩) Reflection 앞선 포스팅에서 스프링/스프링부트의 DispatcherServlet에 대해 알아보았습니다.. 짧게 요약하자면, DispatcherServlet은 클라이언트의 요청을 받아서 적절한 컨트롤러(또는 핸들러)를 찾아 동적으로 실행시킨 후 결과를 받아 Http형식에 맞게 리턴하는 기능을 합니다. 이때, '적절한 컨트롤러를 찾아 동적으로 실행'시키는 부분에서 '리플렉션(Reflection)'이라는 개념이 들어갑니다. Reflection이란? 오라클 홈페이지에서는 리플렉션을 아래와 같이 소개하고 있습니다. 더보기 Reflection is a feature in the Java programming language. It allows an executing Java program to examine.. 2022. 7. 16.
[SpringBoot] 스프링부트 이해하기- 3편 IoC와 DI 쉬운 버전 스프링의 핵심 개념인 IoC(Inversion of Control, 제어의 역전)과 DI(Dependency Injection)에 대해서 조금 적어보려고한다. 이것 저것 보다보니, 개발의 핵심을 초큼 파악하게 됐는데, 그건,, 결합도를 낮추고 응집도는 높이기와, 최대한 코드 쉽게 짜기 저 두 개를 달성하게 해줘서 스프링/스프링부트가 성공했나,,, 아무튼 우선 결합도와 응집도의 개념은 다음과 같다. 결합도 클래스간의 상호의존정도를 나타내는 지표. 높은 결합도는 하나를 수정한다고 하면 의존적인 다른 객체를 수정해야한다. 따라서, 결합도가 낮을수록 객체 재사용 및 유지보수가 유리하다. 응집도 하나의 모듈 내부에 존재하는 구성요소들의 기능적 관련성을 나타내는 지표. 응집도가 높은 모듈은 하나의 책임에 집중하고 .. 2022. 7. 14.
[SpringBoot] 스프링부트 이해하기- 2편 Dispatcher Servlet, FrontController패턴 지난편에서 Servlet에 대해 살펴보았다. 2022.07.12 - [풀스택 개발자/Spring Boot] - [SpringBoot] 스프링부트 이해하기- 1편 Servlet이란(feat. Web Container) [SpringBoot] 스프링부트 이해하기- 1편 Servlet이란(feat. Web Container) 최근 스프링부트 인강을 듣고 학원에서 나눠준 템플릿 위에 간단한 CRUD 게시판을 만들어보았는데, 스프링부트의 여러 설정파일이나 이 간단한 어플리케이션이 어떻게 동작하는지 전혀 모르는 daydayplus.tistory.com 이번 편에서는 드디어 SpringBoot/Spring에서는 이 서블릿이 어떻게 작동하는지 알아보았다. Front Controller 패턴 우선 FrontControl.. 2022. 7. 14.
[SpringBoot] 스프링부트 이해하기- 1편 Servlet이란(feat. Web Container) 최근 스프링부트 인강을 듣고 학원에서 나눠준 템플릿 위에 간단한 CRUD 게시판을 만들어보았는데, 스프링부트의 여러 설정파일이나 이 간단한 어플리케이션이 어떻게 동작하는지 전혀 모르는 것 같아서, 한번 이해해보고자 스프링부트 관련 개념들을 정리해보자한다. 누군가 프로그래밍을 배우는 과정은 눈감고 코끼리를 더듬거리며 코끼리를 알아가는 거랬는데, 엄청 와닿는 것 같다. 각설하고, 스프링부트는 우선 서버 개발을 편하게 해주는 프레임워크이기 때문에, 서버가 어떻게 동작하는지를 알아야할 것 같다. 그래서 우선 대망의 1편은 서블릿(Servlet)이다. 서블릿(Servlet)이란? 사실 개념이 잘 그려지지 않아서 여러 자료를 둘러본 후 스스로 내린 정의는 서블릿은 동적 웹 페이지(Dynamic web page)를 .. 2022. 7. 12.
Entity / Value Object / DTO / DAO 간단하게 개념 정립하기 SpringBoot 강의를 들으며, Entity, Value Object, DTO, DAO라는 용어들을 많이 봐왔지만 개념도 없어서 당황스러웠다. 그래서 간략하게 나마 개념을 정리해보았다. 연속성(Continuity) 위의 개념들을 이해하기 위해서는 '연속성'라는 것을 먼저 이해할 필요가 있었다. 내가 이해한 연속성이란 '어떤 속성이 바뀌더라도 자신의 identity(자기동일성)을 유지하는 것'이다. 예를 들자면, 홍길동이라는 한 사람은 전화번호가 바뀌더라도, 사는 곳이 바뀌더라도 여전히 같은 홍길동이다. 이때 '홍길동은 연속성이 있다'라고 말할 수 있다. Entity 정보들을 담고 있으면서 연속성이 있는 객체를 말한다. 예를 들면 홍길동 객체가 이에 해당할 수 있을 것이다. 조금더 실제적인 예시로는 쇼.. 2022. 7. 3.
[에러해결 SpringBoot] Lombok @DATA 컴파일 에러 문제상황 Lombok에서 @DATA 어노테이션을 사용한 클래스에서 아래의 에러가 발생했습니다. @NoArgsConstructor @AllArgsConstructor @Data public class WishlistEntity extends MemoryDbEntity { private String title; private String category; private String address; private String readAddress; private String homePageLink; private String imageLink; private boolean isVisit; private int visitCount; private LocalDateTime lastVisitDate; } 더보기 G.. 2022. 7. 3.
[SpringBoot 에러] Required request parameter 'id' for method parameter type String is not present 문제발생 원인은? 아래처럼 @RequestParam 어노테이션을 사용하여 '명시적으로 쿼리 필드 이름을 지정해서 가져오는 경우', 클라이언트에서 해당 쿼리 필드를 요청하지 않거나 오타 등으로 다른 이름으로 요청하게되면 발생하는 오류입니다. @RestController @RequestMapping("/api/server") public class HelloController { @GetMapping("/hello") public User hello(@RequestParam String id, @RequestParam String email, @RequestParam String phoneNumber) { User user = new User(); user.setId(id); user.setEmail(ema.. 2022. 6. 28.