Java Spring 20

[웹 애플리케이션 개발] WordController 수정, word 정보를 js를 통해 전달하는 API 만들기 (~ing)

내가 앞으로 해야 할 일 1. WordController 수정 : 수정하여 word 정보를 주고 받을 수 있도록 mapping이 필요하다. (RESTful API) @RestController @RequestMapping("/api/words") public class WordController { @Autowired private WordService wordService; @GetMapping("/{month}/{day}") public ResponseEntity getWordsByMonthAndDay( @PathVariable int month, @PathVariable int day ) { try { List words = wordService.findByMonthAndDay(month, day)..

Java Spring 2023.09.25

[웹 애플리케이션 개발] 글 작성 기능 제작 과정 - API 구현 및 테스트

1. 알아두면 좋은 HTTP 응답 코드 200 OK : 요청이 성공적으로 수행되었다. 201 Created : 요청이 성공적으로 수행되었고, 새로운 리소스가 생성되었다. 400 Bad Request : 요청 값이 잘못되어 요청에 실패했다. 403 Forbidden : 권한이 없어 요청에 실패했다. 404 Not Found : 요청 값으로 찾은 리소스가 없어 요청에 실패했다. 500 Internal Server Error : 서버 상에 문제가 있어 요청에 실패했다. 2. API 실행 테스트 NoteController 에서 글을 생성하는 작업을 하려고 한다. HTTP POST 요청을 Postman을 통해 보내보았다. 3. 직렬화와 역직렬화 HTTP 에서는 JSON을, 자바에서는 객체를 사용한다. 그러나 서로..

Java Spring 2023.09.18

[웹 애플리케이션 개발] - 내 코드 feedback (+계속 추가)

프로젝트에서 내가 맡은 기능은 Note (게시글 작성) 기능이다. 단순한 CRUD 기능을 포함하여 우리 팀이 추가한 특징인 "매일 바뀌는 키워드"까지 적용하여 기능을 만들어야 한다.지난 8월 한 달간, 완전 기본 기능을 구현한 코드 ver.1 & 기본 테스트 코드를 작성해서 돌려보았다. 에러 없이 잘 돌아가게 만들기는 했지만, 내 코드가 좋은 코드인가? 라는 질문에는 자신있게 대답할 수 없어서 초안 코드를 피드백하는 기록을 남기고자 한다.초안은 그동안 배운 Java 프로그래밍 지식과 구글링을 통해 완성되었다. 그래서 좋은 개발자의 클린 코드와는 다른 부분이 많았고 그 부분을 피드백 하여 더 좋은 코드로 업그레이드하고자 한다. 1. Builder 패턴으로 객체 생성하기@Builder 어노테이션을 사용하여 ..

Java Spring 2023.08.30

[SOLID] SRP : 단일 책임 원칙

SOLID의 첫 번째 원칙은 SRP (Single Responsibility Principle) 이라는 단일 책임 원칙이다. 단어 그대로의 뜻으로, 딱 하나의 책임을 가져야 한다는 의미. 1. 책임이란 무엇인가? 객체지향 Java 프로그램 설계 관점에서 볼 때, SRP에서 말하는 책임의 기본 단위는 객체를 말한다. 어떤 객체가 있으면, 그 객체는 단 하나의 책임만 가져야 한다는 의미. 책임이란 무엇일까? 책임은 객체가 맡은 무언가라고 볼 수 있다. 객체가 "해야 하는 것" or "할 수 있는 것" or "해야 하는 일을 잘 할 수 있는 능력" 등을 의미한다. 한 객체에 너무 많은 책임이 들어가면 프로그램이 복잡해진다. 또한, 책임이 많으면 규모가 큰 프로그램에서 오류가 났을 때, 책임 소재를 명확하게 하..

Java Spring 2023.07.06

GoF 디자인 패턴 - SOLID 원칙 이해하기

SOLID 원칙이란? 소프트웨어 설계 시 지켜야 하는 5가지 원칙이 존재한다. 각각의 원칙의 앞 글자를 따서 SOLID 원칙이라고 부른다. 개발자들은 좋은 소프트웨어를 만들기 위해 여러 가지 원칙을 고려한다. 특히, 그 중에서도 SOLID 원칙은 대부분의 개발자들이 소프트웨어 설계 시 중요하게 여기는 원칙이며, 이에 어긋나지 않게 프로그래밍 하는 법을 고민하고 실행해야 한다. 각 원칙 별로 게시글을 나눠서 업로드 할 예정이다. 또한, 원칙에 대해 공부/실습한 구체적인 내용을 추가하겠다. S : SRP (Single Responsibility Principle, 단일 책임 원칙) O : OCP (Open-Closed Principle, 개방-폐쇄 원칙) L : LSP (Liskov Substitution ..

Java Spring 2023.07.05

스프링 빈 의존 관계 주입 (자동/수동), 빈 스코프는 무엇인가?

더보기 스프링 빈(Spring Bean)은 간단하게 다음과 같은 라이프 사이클을 가진다. 객체 생성 -> 의존 관계 주입 스프링 빈의 이벤트 라이프사이클은 다음과 같다. 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료 이런 의존 관계를 자동 or 수동으로 주입할 수 있다. 최근 스프링 기술 경향으로 볼 때, 편리한 자동 주입 기능을 기본으로 사용하면서 수동 주입이 필요한 것은 추가로 등록하고 있다. 기본적으로 자동 주입을 생각하되, 다형성을 적극 활용하는 비즈니스 로직(객체)는 수동 등록을 고민해보는 것이 좋다. 수동을 써야 하는 경우는 본 게시글 아래 부분에 참고 부분으로 적어놓겠다. 다시 자동 주입으로 넘어가자면, 의존 관..

Java Spring 2023.07.03

싱글톤 패턴, 싱글톤 컨테이너

싱글톤 패턴 여러 가지 디자인 패턴 종류 중의 하나, 하나의 클래스 -> 하나의 객체 인스턴스만 가짐 (클래스의 인스턴스가 딱 한 개만 생성되는 것을 보장하는 디자인 패턴) 해당 객체가 딱 한 개 생성되고, 생성된 객체 인스턴스를 여러 곳에서 공유하게 만들 수 있음 (여러 번 호출해도 같은 객체 인스턴스를 반환하는 것을 확인 가능) 싱글톤 패턴으로 만들어진 클래스의 인스턴스는 전역 인스턴스라서 다른 클래스의 인스턴스들이 데이터를 공유할 수 있음 싱글톤 패턴의 단점, 문제점 싱글톤 인스턴스를 여러 곳에서 많이 공유할 경우 다른 클래스의 인스턴스 간 의존성이 높아질 위험 싱글톤 패턴 구현하는 코드 많이 필요 의존 관계에서 클라이언트가 구체 객체에 의존하여 DIP 원칙 위반함 의존 관계에서 클라이언트가 구체 ..

Java Spring 2023.07.03

객체 지향 설계 원칙 5가지(SOLID)를 지킨 프로그램 제작

좋은 백엔드 개발자라면, SOLID 원칙을 잘 지킨 코드를 짤 수 있어야 한다. Spring이 만들어진 이유도 이 5가지 원칙을 어떻게 하면 잘 지킬 수 있을지 고민하다가 생긴 것이라고 한다. 특히 이 5가지 원칙 중에서도 OCP, DIP 를 가장 중요하게 봐야 한다. 객체 지향 설계 원칙 5가지(SOLID)는 다음과 같다. 앞 글자를 따서 SOLID 원칙이라고 부른다. SRP: 단일 책임 원칙(single responsibility principle) OCP: 개방-폐쇄 원칙 (Open/closed principle) LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregation principle) DIP: ..

Java Spring 2023.05.29

스프링 Spring 이란? (김영한 로드맵, 스프링 핵심 원리 기본편)

1. 스프링 Spring 이란? 하나가 아니라 여러 개의 기술 모음이다. Spring Project 안에 많은 기술, 많은 프로젝트가 포함되어 있으며, 이중에서 가장 중요한 것은 스프링 프레임워크이다. 2. 스프링 프레임워크 스프링 프레임워크를 구성하는 요소가 많기 때문에 모두 아는 것은 어렵다. 이 중에서 핵심 기술과 웹 기술 위주로 아는 것이 좋다. 핵심 기술 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹 기술 스프링 MVC, 스프링 WebFlux 데이터 접근 기술 트랜잭션, JDBC, ORM 지원, XML 지원 기술 통합 캐시, 이메일, 원격접근, 스케줄링 • 테스트: 스프링 기반 테스트 지원 언어 코틀린, 그루비 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용한다. 스..

Java Spring 2023.05.22

JAVA/Spring 에서 어노테이션(@) 이란? - 어노테이션 사용의 중요성

1. 어노테이션(@) 이란? Java 코드에서 @ 기호는 어노테이션(Annotation)을 의미한다. 어노테이션이라는 단어의 사전적 의미는 '주석'이라는 의미인데, 실제 코드에서 어노테이션은 주석과 같은 기능을 하는 것처럼 보인다. 클래스 class, 메소드 method, 필드 field 등 다양한 요소에 어노테이션을 적용할 수 있다. 어노테이션은 소스 코드에 메타 데이터(meta data: 데이터의 구조, 정보, 표준화 한 것을 나타내는 데이터)를 추가하여 컴파일러에게 특정 작업을 수행하도록 지시하는 역할을 한다. Java 에서 기본적으로 제공하는 어노테이션이 있고, 커스텀화하여 자신만의 어노테이션을 사용할 수도 있다. 그러나 많은 사람들이 협업하는 개발 환경에서 기본적인 어노테이션을 많이 사용하기 때..

Java Spring 2023.05.15