Spring 18

[템플릿] DTO to Entity, Entity to DTO

Entity를 DTO로 변환시키거나, DTO를 Entity로 변환시킬 때 사용하는 기본 코드입니다. Entity to DTO @Entity public class Something { ... private String name; private String email; ... public SomethingResponseDto toResponseDto(){ return SomethingResponseDto.builder() .name(name) .email(email) .build(); } } 사용하는 방법 SomethingResponseDto responseDto = something.toResponseDto(); Entity to DTO List 사용하는 방법 List responseDtoList = s..

Spring 2023.04.17

Spring Security Session기반 인증 방식 VS Spring Security + JWT토큰 인증 방식

Spring Security Session 기반 인증 방식 디렉토리 구조 📁config 📁 auth © CustomUserDetails © CustomUserDetailsService © SecurityConfig 📁 controller © IndexController 📁 model © User 📁 repository ⓘUserRepository 1. SecurityConfig @Configuration public class SecurityConfig { @Bean public BCryptPasswordEncoder encodePwd() { return new BCryptPasswordEncoder(); } @Bean public SecurityFilterChain filterChain(HttpSecu..

Spring 2023.04.12

[Spring] gradlew: command not found 에러

gradle wrapper를 이용해 jar 파일을 생성하던 중 만난 에러입니다. 인텔리제이 터미널에서 해당 명령어를 입력했을시 $ gradlew build 다음과 같은 에러 문구를 만났습니다. bash: gradlew: command not found 구글링을 해봤을 때 gradlew에 실행권한이 없어 발생한 에러로 아래와 같은 명령으로 실행권한을 부여한 후 chmod +x gradlew $ ./gradlew build 입력했을 시 BUILD SUCCESSFUL되었습니다. + $ ./gradlew build 와 $ gradlew build 둘 다 해보신 후 인텔리제이 재부팅해보시는 걸 추천합니다.

Spring 2023.03.09

[타임리프] Session Id를 html, js에 가져다 쓰는 방법

토이프로젝트를 할 때 html이나 js로 sessionId가 넘어가지 않아서 애를 많이 먹었습니다. 오히려 자바 코드 짜는 것보다 이 부분에서 시간을 더 많이 쏟은 듯합니다. 그만큼 헷갈리고 다음에도 헷갈릴 가능성이 있기에 기록으로 남겨둡니다. html Controller @GetMapping("/user/{pageUserId}") public String profile(@PathVariable int pageUserId, Model model, @AuthenticationPrincipal CustomUserDetails customUserDetails) { ... model.addAttribute("sessionId", customUserDetails.getUser().getId()); return "..

Spring 2023.02.08

[Spring Data JPA] 쿼리 메서드 기능

쿼리 메서드 기능 중 메서드 이름만으로 쿼리를 생성하는 기능이 있습니다. 인터페이스에 메서드만 선언하면 해당 메서드가 이름으로 적절한 JPQL 쿼리를 생성해서 실행합니다. Spring Data JPA가 제공하는 쿼리 메소드 기능은 크게 3가지입니다. 메서드 이름으로 쿼리 생성 메서드 이름으로 JPA Named 쿼리, Named 네이티브 쿼리 호출 @Query 어노테이션을 사용해서 리포지토리 인터페이스에 쿼리 직접 정의 @Query 어노테이션을 사용해서 리포지토리 인터페이스에 쿼리 직접 정의 하는 건 토이플젝에서 늘 하던 방식이므로 이번 포스팅에서느 메서드 이름으로 쿼리 생성에 대해 자세하게 살펴보도록 하겠습니다. [ 메소드 이름으로 쿼리 생성 ] 토이프로젝트로 웹 애플리케이션을 만들 때 로그인 input..

Spring 2023.01.26

스프링 빈 이란? 스프링 빈 등록하는 방법 (@Bean, @Configuration, @Component)

이전 포스팅에서 스프링 IoC컨테이너에 대해 알아보았습니다. 그때 간단하게 빈에 대해 언급하고 넘어갔었는데요, 이번 포스팅에서는 스프링 빈에 대해 알아보도록 하겠습니다. 스프링 빈이란? (Spring Bean) Spring에서 Bean이란 Spring IoC 컨테이너에 의해 관리되는 Java Object를 Bean이라고 하며 Spring에서는 등록되어 있는 Bean을 싱글톤 객체로 생성하여 관리합니다. Spring IoC 컨테이너는 인스턴스의 생명주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공하는데 그중 의존성 주입이 있습니다. 의존성 주입을 받으려면 전제조건으로 빈이 되어야 하므로 이번 포스팅에서는 빈을 등록하기 위한 방법들에 대해 살펴보도록 하겠습니다. 코드 중에 new 연산자로 객체를 ..

Spring 2022.11.13

@RequestParam과 @PathVariable 차이

이전 포스팅에 웹 계층 개발 부분을 정리하면서 '@RequestParam과 @PathVariable 차이'를 중간에 삽입해서 적었던 기억이 있습니다. 하지만 토이 프로젝트를 할 때나 다른 사람들의 코드를 볼 때 자주 헷갈리는 개념이므로 따로 빼서 포스팅하게 되었습니다. Spring에서 @RequestParam과 @PathVariable차이 Controller 단에서 위 두 어노테이션은 uri를 통해 전달된 값을 파라미터로 받아오는 역할을 합니다. 쓰임과 차이점에 중점을 두면서 정리해보겠습니다. http://localhost:8000/board?page=1&listSize=20 ← @RequestParam방식 http://localhost:8000/board/1 ← @PathVariable방식 @Reque..

Spring 2022.11.07

스프링IoC 컨테이너 (Feat. 빈(Bean), 빈 스코프(Bean Scope))

스프링 IoC컨테이너의 IoC는 Inversion of Control으로 의존 관계 주입(Dependency Injection, DI)라고 하며 어떤 객체(예제에서는 StudioService)가 사용하는 의존 객체(StudioRepository)를 직접 만들어 사용하는 게 아니라 주입받아 사용하는 방법을 말합니다. @Service @RequiredArgsConstructor public class StudioService { private final StudioRepository studioRepository; ... } 이 한 줄을 읽으면서 혹시 이해가 안 가는 부분이 있으셨나요? 바로 저... 어떤 부분 때문에 이해가 안 가셨나요? 저의 경우는 각각의 개념에 대한 이해뿐만 아니라 개념들이 서로 어떻게..

Spring 2022.10.24

Spring, Spring boot란? (컨테이너, DI, IoC)

이번 포스팅에서는 Spring과 Spring boot의 개념과 주요 특징(Ioc, DI)에 대해 간단히 알아보도록 하겠습니다. 1. Spring이란? 스프링은 자바 기반의 웹 애플리케이션을 만들 수 있는 프레임워크입니다. 2. Spring 특징 Spring은 자바 객체와 라이브러리들을 관리해주며, 톰캣과 같은 WAS 가 내장되어 있어 자바 웹 애플리케이션을 구동할 수 있습니다. Spring은 경량 컨테이너로 자바 객체를 직접 Spring 안에서 관리합니다. 객체의 생성 및 소멸과 같은 생명 주기(Life cycle)를 관리하며, Spring 컨테이너에서 필요한 객체를 가져와 사용합니다. Spring의 가장 큰 특징으로 DI와 IoC가 있습니다. 2-1. 의존성 주입 (DI, Dependency Injec..

Spring 2022.09.02

[타임리프] 자주 사용하는 기능 정리

프로젝트 생성 타임리프 소개 공식 사이트: https://www.thymeleaf.org/ 공식 메뉴얼 - 기본 기능: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 공식 메뉴얼 - 스프링 통합: https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html 타임리프 특징 1. 서버 사이드 HTML 렌더링 (SSR) 타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용됩니다. 백엔드 개발자의 경우 (화려한 프론트엔드 기술을 적용할 필요 없이) 빠르게 데이터를 확인 해야할 일이 생깁니다. 이때 간단한 어드민 페이지 정도 만들어서 확인해 볼 수 있는데요, 이를 위해서라도..

Spring 2022.08.17