Backend

1. 개요 이번 포스팅에서는 생성자를 편하게 만들어주는 생성자에 대해 알아볼 것이다. 이전 포스팅에서 DI에 대해 알아보면서 장점이 많은 생성자 주입을 사용하는 게 좋다는 것을 알았다. 이 생성자를 내가 직접 만들 수도 있지만 Lombok에서는 어노테이션으로 지원을 해준다. @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor 이 세 개의 어노테이션이 각각 어떤 차이점을 가지고 어떤 상황에 사용해야 하는지 궁금해서 찾아봤고 정리해보려고 한다. https://projectlombok.org/features/constructor @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor..
1-1 의존성이란? 의존성이란 흔히 A가 B를 의존하는 것을 말한다. 즉 클래스 A가 클래스 B의 메서드를 호출하거나 클래스 B의 객체를 생성하여 사용하는 경우 A는 B에 의존성을 가지고있다 라고 한다. 2. 의존성 주입(DEpendency Injection)이란? DI(Dependency Injection)란 의존성 주입, 의존 관계 주입 이라고 불리며, 객체 내부에서 직접 호출하는 대신, 외부(스프링 컨테이너)에서 객체를 생성해서 넣어주는 방식이다. 의존성 주입을 함으로써 객체 간 유연성이 높아지 결합도를 낮출 수 있다. 코드로 한번 살펴보자 아래의 코드는 Cafe클래스와 Americano클래스의 의존성이 높은 코드이다. 의존성이 높은 이유는 1. 객체 생성의 책임 > Americano객체의 내부 구..
토이프로젝트를 진행하던 중 get방식으로 글작성하는 페이지를 랜더링 하던 중 에러가 발생했다. 여러가지 에러중에 타임리프 경로에 관한 에러도 있었기 때문에 경로를 올바르게 변경해줘도 오류가 떠서 구글링을 해봤다. 현재 내 Posting Form의 html 코드와 PostController코드이다. 작성 controller의 /freeboard/posting 경로로 들어오는 post방식의 값을 postDTO로 전송하고있다. @GetMapping("/posting") public String getBoardWrite() { return "board/postwrite"; } 나는 단지 페이지를 랜더링하기 때문에 아무거도 안보내줘도 되고 해당 form에 대한 html코드가 있는 경로만 잘 매칭시켜주면 된다고 생..
스프링 시큐리티 로그인이 안돼서 개발자 도구에서 네트워크 패킷을 봣는데 자꾸 저@%7B/signin%7D주소로 호출을 하고있었다. 그래서 구글링 결과 너무 별거없는 오류였다.. 타임리프 문법을 사용하는데 action에 타임리프를 안줘서 생기는 오류였다 action > th:action
React와 Node.js공부를 시작했는데 처음부터 에러와 마주쳐버렸다... 아래의 사진은 Codespaces 에서 실습 중 Thunder Client로 API요청을 보낸 상황이다. 사진과 같이 Post로 요청을 보냈을 때 401 Unauthorized 오류가 떴다. 해당 오류 Status code 401(Unauthorized) 오류는 리소스에 접근할 자격이 없다는 뜻이다. 그래요청이 deny당한 것이다. 구글링 결과 API Key를 잘못 적용했거나 권한이 없다고해서 권한도 줘봤지만 해결되지 않았다. 나느 군대에서 Codespaces와 Gitpod으로 코딩을 하고 있기 때문에 여기서 포트를 열면 Private or Public 으로 열리게된다. Default는 Private로 열리기 때문에 요청 갈수가..
스프링 시큐리티를 활용하여 회원가입 로직을 짜고 회원가입 테스트코드까지 작성해서 테스트코드가 통과하는것을 확인 했다. 이후 실제로 폼에 들어가 회원가입을 해보니 값을 입력하고 submit을 하니 Valid error로 값을 못받아왔다고 떴다. 난 분명 값을 다 보내주고 타임리프 문법도 확인해봤는데,, 그래서 컨트롤러에서 값을 찍어봤더니 실제로 값을 못받아 오고 있었다.아래 두 사진은 나의 컨트롤러와 회원가입 폼이다. 로직에는 문제가 없는 것 같아 값을 받아오는 객체인 ModelAttribute쪽에 문제가 있는 것 같았고 구글링을 해보던 중 안주형님의 블로그 글을 찾게 되었다.https://dkswnkk.tistory.com/457 [Spring] @RequestParam, @RequestBody, @Mo..
Post로 MemberDTO로 입력받은 정보를 받았는데 계속 Nickname 칸만 입력을 못 받아오고 있었다. 확인해보니 html 태그에 name="nickname"이 없었다. id태그가 아닌 name태그와 매칭해서 값을 가져오기 때문에 이런 오류가 뜨면 html쪽을 확인해보길 바란다. 수정 전 수정 후
0. 대표적인 어노테이션 이름 설명 @Controller 해당 클래스가 Controller임을 나타내기 위한 어노테이션 @RequestMapping 요청에 대해 어떤 Controller, 어떤 메소드가 처리할지를 맵핑하기 위한 어노테이션 @RequestParam Controller 메소드의 파라미터와 웹요청 파라미터와 맵핑하기 위한 어노테이션 @ModelAttribute Controller 메소드의 파라미터나 리턴값을 Model 객체와 바인딩하기 위한 어노테이션 @SessionAttributes Model 객체를 세션에 저장하고 사용하기 위한 어노테이션 @RequestPart Multipart 요청의 경우, 웹요청 파라미터와 맵핑가능한 어노테이션(egov 3.0, Spring 3.1.x부터 추가) @Co..
1. 개요 군대에서 개발을 본격적으로 시작했고 사지방 컴퓨터에서 intellij를 맨날 깔아서 사용할 수 없기 때문에 git과 연동되어있는 codespaces와 gitpod을 사용해서 프로그래밍 공부를 하고있다. 이 두개 컨테이너는 VSCode를 지원해주기 때문에 VScode에서 스프링 개발하는 방법을 주로 다룰 것이다. 하지만 스프링을 공부 할 때에는 intellij를 사용하는 것을 추천한다. 다만 군대와 같은 곳에서는 상황에 맞춰 최대한 열심히 하는수밖에 없으니까~! 스프링을 시작할 때에는 프로젝트에 내가 다 작성할 수도 있지만 요즘은 Spring boot를 활용하여 프로젝트를 만든다. start.spring.io를 활용하여 만들 수도 있지만 나는 VScode환경이기 때문에 Spring Initial..
· Backend/Java
1. 개요 자바의 입력 함수 중 Scanner와 BufferedReader를 알게되었는데 Scanner에서는 그냥 사용하지만 BufferedReader를 사용할 때에는 항상 함수의 매개변수 옆에 throws IOException을 써줬다. Input Output에 관한 예외처리인 것 같았지만 확실히 알고싶어 함수를 뜯어보고 검색해서 찾아봤다. 1. BufferedReader import java.io.InputStreamReader; import java.util.Scanner; public class Study { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new Inp..
보글보글소다
'Backend' 카테고리의 글 목록 (2 Page)