백엔드/Spring

·백엔드/Spring
안녕하세요. 이름을 바꿨습니다. 이제 미더덕이예요. 토이프로젝트에 적용해두었던 Lucy-XSS-Servlet-Filter가 Jakarta패키지를 지원하지 않음에 따라 XSS 방지 기능을 리팩토링하는 시간을 갖게 되었습니다. 이번 기간에 제가 부족한 부분을 많이 느껴 경험했던 이슈를 기초부터 자세히 정리하고 넘어가고자 합니다. 사실 이번 게시글은 XSS 방지에 대한 글이라기 보단 XSS 방지를 해결하기 위해 알아야할 선수 지식들에 대한 정리입니다. [이번 주제에서 다룰 내용들]1.  HTTP - Method & Content-Type2. Spring Web Annotations3. HttpServletRequestWrapper 4. HttpMessageConverter  이번 게시글에선 가장 기초가 되는 ..
·백엔드/Spring
https://www.yes24.com/Product/Goods/126845564이번 시간에는 자바/스프링 개발자를 위한 실용주의 프로그래밍 4장 - SOLID를 읽고 정리해보겠습니다.   SOLID 원칙의 목적 - 응집도를 높이고 의존성을 낮춘다. 본론에 들어가기에 앞서, 가장 먼저 책에서 말하고자하는 SOLID의 원칙의 목적은 무엇일까? SOLID 원칙이 추구하는 것은 바로 "객체지향의 설계".그리고 설계 원칙을 통하여 소프트웨어의 응집도를 높이고 의존성을 낮추는 것을 목표로 함. SOILD 원칙을 무작정 암기하는 것보다 "응집도를 높이고 의존성을 낮추는 것에 집중"하는 것이 좋다.   유지보수성을 판단하는 세 가지 맥락 - 영향 범위, 의존성, 확장성설계 관점에서 코드의 유지보수성을 판단하는 세 ..
·백엔드/Spring
안녕하세요. 이번 게시물에선 자바/스프링 개발자를 위한 실용주의 프로그래밍 3장 - 행동을 읽고 정리해보겠습니다.또한 객체지향사상에 부합하지 않는 java interface의 default 메서드에 대한 고찰도 짤막하게 해보았습니다.  데이터 위주 사고 방식 VS 행동 위주 사고 방식public class Car { //데이터 위주의 사고 방식 private Frame frame; private Engine engine; List wheels; private float speed; private float direction;}public class Car { //행동 위주의 사고 방식 public void drive(){} public void changeDirect..
·백엔드/Spring
안녕하세요. 이번 게시글에선 자바/스프링 실용주의 프로그래밍 2부 - 객체의 종류를 읽고 정리해보았습니다. 또한 현재 개인 프로젝트로 DTO로 Record로 사용하는 것이 어떤 의의가 있는지도 알아보겠습니다. 2부 객체의 종류 VO - 값 객체값 객체 예시 코드 (엄밀히 말해서 Color 클래스는 객체가 아님. 해당 클래스로 만들어진 객체가 VO)public class Color { public final int r; public final int g; public final int b; public Class(int r, int g, int b) { //.. 검증 로직 this.r = r; this.g = g; this.b = b; } @Override public boolean equals(Objec..
·백엔드/Spring
안녕하세요. 이번 시간에는 자바/스프링 실용주의 프로그래밍 책을 읽고 정리해보고제 생각을 공유하는 게시글을 작성해보겠습니다.  1부 객체지향  객체지향에서는 복잡한 문제를 역할과 책임에 따라 '개별 객체'로 분해합니다.분해된 각기 다른 특성과 기능의 객체들이 상호작용하고 협력해 문제를 해결합니다.  01 절차지향과 비교하기 컴퓨터 공학에서 말하는 Procedure는 '함수'를 가리킵니다. (순차지향 = 어셈블리어, 절차지향 = C언어)따라서 절차지향 프로그래밍은 함수 지향 프로그래밍. 아래는 자바를 사용하지만 함수 위주의 프로그래밍으로 코딩한 절차지향 코드의 예시. @Service@RequiredArgsConstructorpublic class RestaurantChainService { priva..
·백엔드/Spring
안녕하세요! 이번 게시글에선 일반적인 애플리케이션에서 Http 응답에 대한 방식을 어떻게 설정할지에 대해 알아보겠습니다. 스프링 프로젝트인 경우 보통 @ResponseBody 어노테이션, ResponseEntity 클래스, 커스텀 응답 클래스를 사용하는데요. 각각에 대해 설명해보겠습니다. @ResponseBody - HTTP 규격에 body만 지정할 수 있다. 스프링에서 제공해주는 @ResponseBody 어노테이션입니다. HTTP 규격에 맞춰 컨트롤러의 리턴 값을 Boby에 담아주는 역할을 합니다. 특히 API 서버로 구성된 프로젝트인 경우 컨트롤러에 @RestController 어노테이션을 설정하는 경우가 대부분인데 @RestController 에 @ResponseBody가 부착되어 있으므로 해당 경..
·백엔드/Spring
안녕하세요. 이번 게시글에서는 클라이언트가 요청을 보냈을 때 WAS에서 일어나는 작업에 대해 알아보도록 하겠습니다. 특히 디버거를 사용해서 직접 코드를 살펴보며 자세히 알아볼게요~! 먼저 클라이언트에 요청이 일어난 후 내부적으로 진행되는 순서를 아래와 같이 그려보았습니다.. 저번 게시글에 그렸던 그림과 약간 차이가 있죠? 저번 게시글이 틀렸었습니다.. Connector와 ThreadPool을 별도의 모듈로 표현했었는데, Connector내부에 ThreadPool이 존재하는 것이었습니다.. (이전글 수정은 나중에...) - 각 모듈의 사양을 구분하기 위해서 Connector(Coyote) 모듈은 노란색, ServletContainer(Catailna)는 파란색, Spring은 초록색으로 표현했습니다. - ..
·백엔드/Spring
1. 직접 프록시 객체 작성 - 데코레이터 패턴 - 직접 작성하므로 프록시 대상 클래스마다 클래스 구현 필요.. public class UserServiceTx implements UserService{ UserService userService; // 타겟 오브젝트 PlatformTransactionManager transactionManager; public void setTransactionManager( PlatformTransactionManager transactionManager){ this.transactionManager = transactionManager; } public void setUserService (UserService userService){ this.userService..
·백엔드/Spring
이번 게시글에선 WAS가 어떻게 실행되고, 요청을 처리하는지 알아보겠습니다. 또한, 그 과정에서 WAS에 배포된 Spring 프로젝트를 어떻게 구동시키는지도 함께 알아보시죠,, WAS가 뭐야? - Tomcat… 우리는 면접 단골 문제로 web server와 web application server의 차이점에 대해서 외운 적이 분명히 있습니다.. web server는 정적 컨텐츠를 다루고, web application server는 동적 컨텐츠를 다룬다고 말이죠.. 그 후, 실무에서 WAS를 접할 땐 종종 이런식으로 접하게 됩니다. WAS 그거 스프링 서버 아냐? 톰캣? 아~ 그 고양이 그림~? 톰캣이 스프링 아니야? 응 아냐… 톰캣과 스프링은 분명 다른데 어디까지고 톰캣이고 스프링인지, 또한 각자의 구분..
꾸준함의 미더덕
'백엔드/Spring' 카테고리의 글 목록