분류 전체보기

1. 홈 화면 추가 @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } Hello Spring 회원 기능 회원 가입 회원 목록 스프링 컨테이너에서 관련 컨트롤러를 먼저 찾고 없으면 static contents로 넘어가게 된다. Controller가 우선순위이기 때문에 정적 컨텐츠가 아닌 localhost:8080/ url에 매치되는 컨트롤러를 탄다. 2. 회원 등록 화면 @Controller public class MemberController { private final MemberService service; @Autowired public MemberController(M..
스프링이 실행될 때 스프링 컨테이너라는 통이 생성된다. @Controller 어노테이션이 있으면 MemberController 객체를 생성해서 컨테이너에 넣어두고 스프링이 빈으로 관리한다. 스프링 빈 등록하는 2가지 방법 Component Scan @Component: 컨테이너에 스프링 빈으로 등록하는 어노테이션 @Service, @Controller, @Repository에 @Component가 포함되어 있다. @Autowired: 객체를 연결시키는 어노테이션 (연관관계 설정) 컴포넌트 스캔은 실행되는 Application과 같은 패키지 하위 내에서만 작동한다. 스프링은 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다 -> 유일하게 하나만 만들어서 공유 자바 코드로 직접 스프링 빈 등록..
1. 비즈니스 요구사항 정리 2. 회원 도메인과 리파지토리 만들기 1. MemberRepository 인터페이스 생성 public interface MemberRepository { Member save(Member member); Optional findById(Long id); Optional findByName(String name); List findAll(); } 2. 인터페이스를 구현하는 MemoryMemberRepository 생성 public class MemoryMemberRepository implements MemberRepository { // key=id, value=Member 형식으로 저장 private static Map store = new HashMap(); private..
스프링의 기본기를 탄탄히 하기 위해 김영한의 Spring 강의를 듣기 시작했다. 원래 알던 내용이 많지만 동작 원리에 대해 더 심층적으로 이해하기 위해 공부하려고 한다. 정적 컨텐츠 (static) static 폴더에 hello-static.html 파일을 생성한다. static content http://localhost:8080/hello-static.html 경로를 치고 들어가면 해당 뷰로 연결된다. hello-static이라는 컨트롤러가 없기 때문에 static에 있는 hello-static이라는 이름의 html 파일을 찾음 템플릿 엔진 MVC: Model, View, Controller 템플릿 엔진: 동적으로 생성되는 웹 페이지나 문서의 구조와 내용을 분리하여 관리하는 도구 템플릿 파일과 데이터..
· 공부
JWT는 JSON Web Token의 약자로, 웹에서 정보를 안전하게 전송하기 위한 인증 방식 중 하나이다. 이 방식은 두 개체 사이에서 JSON 객체를 사용하여 정보를 안전하게 전송하도록 설계되어 있다. 이 정보는 디지털 서명이 되어 있어서 보증할 수 있다. JWT는 클라이언트와 서버 간에 토큰 기반 인증을 할 때 주로 사용된다. Cookie, Session, Token Cookie 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일 사용자가 웹 사이트에 방문할 때 생성되며, 사용자의 PC에 저장된다. 쿠키의 주요 목적은 사용자의 이전 활동을 기억하고, 그 정보를 활용해서 사용자에게 맞춤화된 서비스를 제공하는 것이다. 1. 클라이언트가 서버에 요청을 보낸다. 2. 서버가 응답할 때, 클라이언트 측에 ..
· 공부
원래 JPA를 이용하여 개발할 때, Entity를 DTO 타입으로 변환하는 과정에서 ModelMapper나 생성자 방식을 사용했다. 새롭게 알게 된 MapStruct라는 것이 ModelMapper보다 간편하고 실행 시간에서 이점이 있다고 하여 공부하게 됐다. 또한, 다른 Mapping Library들 중 속도가 가장 빠르고, compile 중 에러를 확인할 수 있다고 한다. // 쪽지 읽기 @Override public GetMessages readMessage(Long id){ Optional result = repository.findById(id); Message message = result.orElseThrow(() -> new HttpClientErrorException(HttpStatus.N..
· 공부
원래 예외 처리를 할 때 가장 기본적인 방식인 if, else 또는 try, catch를 이용하여 서비스단에서 아래와 같이 처리했다. 하지만 이런 경우 서비스의 규모가 커지면 코드가 길어져서 가독성이 떨어지게 된다. 이런 문제점을 해결하기 위하여 @RestControllerAdvice를 이용하는 방법을 찾아 공부하게 됐다. 더보기 @RestControllerAdvice과 @ControllerAdvice의 차이점 두 어노테이션의 주요 차이점은 @ResponseBody의 적용 여부이다. @ControllerAdvice는 이 어노테이션을 직접 적용해야 하지만, @RestControllerAdvice는 기본적으로 @ResponseBody가 적용되어 있다. @ResponseBody는 메소드가 반환하는 값을 HTT..
· 공부
Projections.bean()과 Projections.fields()는 QueryDSL에서 제공하는 메소드로, 쿼리 결과를 특정 클래스의 인스턴스로 맵핑하는 역할을 한다. -> 특정 필드만 선택적으로 조회하고 싶을 때 사용 둘 다 동일한 목적을 가지고 있지만, 내부적으로 사용하는 방식에 차이가 있다. Projections.bean() 이 메소드는 JavaBean 스펙을 따르는 객체에 대한 프로젝션을 생성한다. JavaBean 스펙이란, 기본 생성자를 가지고 있고, getter와 setter 메소드를 통해 필드에 접근하는 클래스를 의미한다. Projections.bean() 메소드는 클래스의 기본 생성자를 이용해 인스턴스를 생성하고, 각 필드의 setter 메소드를 이용해 값을 설정한다. 따라서 이 메..
뱅어돔
'분류 전체보기' 카테고리의 글 목록 (6 Page)