분류 전체보기

Spring

ResponseEntity, RequestEntity, HttpEntity

RequestEntity, ResponseEntity가 뭘까요? 일단 직접 코드를 열어봅시다. // ResponseEntity.java public class ResponseEntity extends HttpEntity { ... } // RequestEntity.java public class RequestEntity extends HttpEntity { ... } 두 객체 모두 HttpEntity를 상속받고 있네요. 그러면 HttpEntity의 개념을 먼저 알아 볼 필요가 있을 것 같습니다. HttpEntity 공식 문서를 보게 되면, HttpEntity에 대한 설명으로 다음과 같이 나와 있습니다. Represents an HTTP request or response entity, consisting..

Spring

Spring Boot에서 로깅해보기

로그, 로깅? 로그(log)란, 시스템의 작동 정보를 의미합니다. 그리고 이런 이런 로그들은 필요에 따라 기록되어야 하는데요, 시스템 실행 중에 발생하는 이벤트나 트랜잭션, 오류 등과 같은 정보는 때에 따라서는 누락되어서는 안됩니다. 이런 정보는 에러나 장애가 발생했을 때 사용될 수도 있고, 분석 데이터로도 활용될 수 있습니다. 그리고 이런 로그들을 작성하는 것을 로깅이라고 합니다. Spring Boot에서의 로깅 Spring Boot에서는 로깅 구현체들을 위한 두 개의 인터페이스가 존재하는데요. 바로 JCL(Jakarta Commons Logging)과 SLF4J(Simple Logging Facade For Java)입니다. JCL 구현체들은 초기의 스프링에서 사용되었고 클래스로딩 타임에 구현체를 선..

우테코 5기

장바구니 미션) 도메인에서 영속성 개념 분리해보기

우테코 레벨 2 미션 중 '장바구니 미션'을 진행하고 있는데요, 최근 저의 가장 큰 고민 중 하나는 '도메인을 어떻게 순수하게 유지할 수 있을까?' 였습니다. 이런 고민을 해결하기 위해 몇 가지 방법을 시도해보게 되었고, 그 과정을 간단하게 기록해보려고 합니다! 1. DIP 적용 우선 저는 순수하게 도메인을 유지시키기 위한 방법으로 DIP를 먼저 떠올렸습니다. 계층형 아키텍쳐를 사용하는 경우, 이를 달성하기 위한 가장 보편적인 방법은 DIP입니다. 비즈니스 레이어에서 Repository나 Dao를 구현하는 영속성 레이어로 향하는 의존성을 DIP를 통해 역전시키면 됩니다. 이렇게 인터페이스를 도메인 패키지 내에 두면, 구현체에 관계없이 비즈니스 패키지는 독립적으로 작동할 수 있게 됩니다. 여기서 주의할 점..

Spring

빈 스코프

빈 스코프란 이번에는 빈 스코프에 대해 알아보려고 합니다. 빈 스코프란 단순하게 다양한 빈 설정 정보 중 하나로 볼 수 있습니다. 스코프(Scope)라는 이름에 맞게, 빈 스코프는 빈 객체가 생성되어 사용되는 범위입니다. 스프링에서는 이러한 빈 스코프를 클래스 레벨에서 기술할 필요 없이 Configuration 파일에서 기술할 수 있게 해줍니다. 스프링이 제공하는 빈 스코프는 총 6가지가 있는데요, 그 중 4개는 세션 정보가 필요해서, 웹서버와 함께 Spring을 구동할 때에만 사용이 가능합니다. 참고로 커스텀 빈 스코프도 만들 수 있다고 하니, 빈 스코프 확장에 대한 제약은 없어보입니다. 그럼 이제 스프링이 제공하는 6개의 빈 스코프를 알아보겠습니다. Singleton Scope 디폴트 빈 스코프이며 ..

객체지향

Layered Architecture란

Layered Architecture란 무엇일까요? 웹 개념을 접하다 보면 해당 키워드에 대해 자주 듣게 됩니다. 따라서 이번 아티클에서는 Layered Architecture에 대해 정리해보려고 합니다. 소프트웨어 아키텍처란? 우선 소프트웨어 아키텍처에 대해 이야기해보려고 합니다. 소프트웨어 아키텍처는 정말 간단하게 말하면 하나의 소프트웨어 구조입니다. 그렇지만 일반적으로 저희가 일상생활에서 이야기하는 구조와는 조금 다른 점이 존재합니다. 소프트웨어 아키텍쳐는 단순한 구조에서 그치지 않고 조금 더 고수준의 개념을 의미합니다. 즉, 소프트웨어 아키텍쳐는 구조 및 코드 배치를 초월해 구성 요소 간 협력, 의존성 등까지 설계하는 것을 포함합니다. 소프트웨어 아키텍처는 저울질의 결과물이다 이런 소프트웨어 아키..

Spring

의존성 주입(DI)이란?

스프링에 처음 입문하면 의존성 주입(DI)라는 키워드를 자주 듣게 됩니다. 의존성을 주입한다, 라는게 무슨 말일까요? 의존성을 왜 주입해야할까요? 애초에 의존성은 무엇인가요? 이번 아티클을 통해 모두 알아보고자 합니다. 의존성은 무엇인가요? 의존성(Dependency)이란 무엇이라고 생각하시나요? 객체지향은 변경에 용이하게 대처하기 위해 탄생했습니다. 기존의 절차지향 패러다임은 변경에 취약했습니다. 조그마한 비즈니스 요구사항의 변경이 코드 구조를 통째로 뒤흔들기도 했습니다. 그렇기에 객체지향 패러다임이 주목받았습니다. 추상화와 캡슐화를 통해 변경에 용이하게 대처할 수 있었기 때문입니다. 그렇다면 의존성이란 개념은 어떻게 객체지향과 연관이 있을까요? 의존성은 연결이다 레고를 한번 생각해보겠습니다. 레고는 ..

Spring

Bean, IoC 컨테이너의 기본 개념 정립하기

이번에 스프링을 처음 사용해보면서 다양한 용어들을 새롭게 접하게 되었습니다. 그 중 가장 자주 들었던, 그리고 궁금했던 주제인 빈과 IoC에 대해 작성하면서 공부해보려고 합니다. IoC(Inversion of Control) IoC란 무엇일까? 빈이란 무엇인지 설명하기 전에, IoC의 개념부터 알아볼 필요가 있을 것 같습니다. Spring을 사용하기 전까지 저희는 1. 객체의 생성, 2. 객체의 사용을 모두 직접 관리했습니다. public static void main(String[] args) { RacingGameController racingGameController = new RacingGameController( new ConsoleInputView(), new ConsoleOutputView(..

객체지향

우아한 객체지향 정리 (조영호님)

설계에 대한 핵심은 의존성이다. 역할, 책임, 협력에 대한 이야기를 주로 하지만, 그 세 가지가 필요한 이유도 의존성 때문이다. 의존성 관리에 따라 설계가 어떻게 바뀌는지 단계별로 보여주려고 한다. Part1 - 의존성이란? 설계가 뭔가요? -> 코드를 어떻게 배치하는지에 대한 의사결정 어떤 클래스에, 어떤 패키지에, 어떤 프로젝트에 코드를 넣을 것인가. 배치하는 기준은 변경이 되어야 하고, 이는 즉 의존성을 의미함. 의존성이란 -> 변경에 의해 영향을 받을 수 있는 가능성. 그러나 설계를 잘하면 영향을 받지 않을 수도 있음. 의존성은 1. 클래스 간, 2. 패키지 간 의존성으로 크게 두 가지로 나뉨. 클래스 의존성 클래스 의존성은 총 4가지가 존재함. 연관 관계: 객체 참조가 영구적으로 존재하는 경우...

우테코 5기

우아한테크코스 레벨1 회고

우아한테크코스에 온 지 두 달이 지났고, 현재 방학을 맞이해 회고를 작성하고 있다. 정말 많은 일들이 있었고, 순식간에 지나간 레벨 1이었지만 그래도 보람찼다고 생각한다. 그래서 생활과 학습, 두 가지 측면으로 나눠 회고를 한번 작성해보려고 한다. 😀 생활 처음 우아한테크코스에 들어갔을 때가 생각난다. 연극 조 조원들과 함께 중국집에 갔는데 레오 음식만 너무 안 나와서 한 40분은 기다렸던 것 같다. 그렇게 연극 조원들과 어찌어찌 친해지고 연극을 준비했다. 연극 주제는 '협업할 때 빌런들' 이었다. 나는 뭐든지 검색해보지도 않고 알려달라도 떼쓰는 '핑프' 역할을 맡았었다. 처음에는 굉장한 부담이었는데, 생각해 보니 이것도 좋은 추억이겠다 싶어서 열심히 했던 기억이 난다. 그때 연극하면서 조금 무리수를 두..

우테코 5기

[레벨 1 미션] 체스 학습 기록(2)

이상(추상화 계층 분리) vs. 현실(기능) 체스 게임에서는 폰은 특별한 이동규칙을 가진다. 첫 이동에 2칸을 이동할 수 있고, 공격을 하는 경우는 대각선으로도 이동이 가능하다. 하지만 다른 기물들은 이렇게 특별한 이동규칙을 가지지 않는다. (나이트, 퀸, 비숍 등) 나는 모든 기물들을 하나로 추상화 해 다루고 싶었으나 폰을 추상화하는 과정에서 어려움을 겪었다. 아무리 생각해도 폰과 다른 기물들을 하나로 추상화 할 수 있는 수단을 찾지 못했었다. 따라서 폰의 이동규칙만 특별하게 상위 개념인 Board 객체에서 다뤘다. 이 부분에 대해서는 당연히 지적이 들어올 것이라 생각했고, 나도 개선해야 할 점이라 생각했다. 그리고 이것이 가지는 단점이 무엇인지 생각도 해보았는데, 아래와 같은 결론을 도출할 수 있었다..

teo_99
'분류 전체보기' 카테고리의 글 목록 (8 Page)