java/spring
[Spring] devtools
스프링 웹 환경에서 html 파일을 수정할 때마다 서버를 중지했다 다시 재시작 해줘야 하는 번거로움이 있었는데, spring-boot-devtools 라이브러리를 추가하면, html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능하다. 이제 서버 실행 중에 html 파일을 수정하고 메뉴 build -> Recompile (Ctrl + Shift + F9)만 해주면 서버 재시작 없이 바뀐 웹 화면을 볼 수 있다.
스프링 - 롬복(lombok) 라이브러리 설치
롬복 라이브러리는 도메인 클래스에서 getter/setter 메서드와 toString, equals, hashCode 등의 메서드를 애노테이션으로 사용할 수 있도록 해주는 라이브러리이다. 이외에도 몇 가지 기능이 존재하지만, 보통 도메인 클래스에 getter/setter 메서드와 생성자를 처리할 때 주로 사용한다. 1. 먼저 라이브러리를 적용한다. gradle 기준 build.gradle에 다음 코드를 포함시킨다. (미리 스프링부트에서 프로젝트를 생성할 때 롬복 라이브러리를 포함시켜도 된다.) plugins { id 'org.springframework.boot' version '2.4.2' id 'io.spring.dependency-management' version '1.0.11.RELEASE' i..
JUnit Test error - No runnable Methods
Spring JPA를 사용한 Test시 아래와 같은 오류가 뜨는 경우가 있다. org.junit.runners.model.InvalidTestClassError: Invalid test class 'jpabook.jpashop.service.MemberServiceTest': 1. No runnable methods ... 보통 import된 패키지가 jupiter test일 때 발생하는 오류이다. import org.junit.jupiter.api.Test; 위 코드를 import org.junit.Test; 이렇게 수정하면 오류가 사라진다.
[Spring] 빈 스코프
스프링 핵심 원리 - 기본편 스프링 핵심 원리 - 기본편 - 인프런 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 초급 프레임워크 및 라이브러리 웹 개발 서버 개발 Back-End Spring 객체지향 온 www.inflearn.com 강의를 들으며 생각 정리 빈 스코프 앞서 배운 싱글톤 빈은 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때까지 유지된다. 이는 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스코프는 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입 ..
[Spring] 빈 생명주기 콜백
스프링 핵심 원리 - 기본편 스프링 핵심 원리 - 기본편 - 인프런 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 초급 프레임워크 및 라이브러리 웹 개발 서버 개발 Back-End Spring 객체지향 온 www.inflearn.com 강의를 들으며 생각 정리 빈 생명주기 콜백 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 간단하게 가상의 외부 네트워크에 연결하는 객체를 생성한다고 가정해보자. public class NetworkClient { private String url; public NetworkClient() { Sys..
[Spring] 의존관계 자동 주입
스프링 핵심 원리 - 기본편 스프링 핵심 원리 - 기본편 - 인프런 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 초급 프레임워크 및 라이브러리 웹 개발 서버 개발 Back-End Spring 객체지향 온 www.inflearn.com 강의를 들으며 생각 정리 의존관계 주입 방법 의존관계 주입은 크게 4가지 방법이 있다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 일반적으로 생성자 주입을 주로 사용하고 가끔 수정자 주입을 사용한다. 필드 주입과 일반 메서드 주입은 거의 사용하지 않는다. 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법이다. 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다..
[Spring] 컴포넌트 스캔
스프링 핵심 원리 - 기본편 스프링 핵심 원리 - 기본편 - 인프런 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 초급 프레임워크 및 라이브러리 웹 개발 서버 개발 Back-End Spring 객체지향 온 www.inflearn.com 강의를 들으며 생각 정리 지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. 그러나 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하는 작업이 반복될 것이다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또 의존관계도 자동으로 주입하는 @Autowired라는 기능..
[Spring] 싱글톤 컨테이너
스프링 핵심 원리 - 기본편 스프링 핵심 원리 - 기본편 - 인프런 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 초급 프레임워크 및 라이브러리 웹 개발 서버 개발 Back-End Spring 객체지향 온 www.inflearn.com 강의를 들으며 생각 정리 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 웹 애플리케이션은 고객이 동시에 계속 요청하는 시스템이다. 그렇다면 매 요청 때마다 객체를 만들어야 할까? 이는 지나친 메모리 사용을 통해 비효율적이다. 이 때문에 싱글톤 컨테이너 사용이 필요하다. 싱글톤 패턴 전에 만들었던 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때마다 객체를 새로 생성한다. 고객 트래픽이..