Spring 46

클라이언트에서 서버로 HTTP 요청 메시지 보내는 방법

주로 사용하는 방법 3가지 쿼리 파라미터 - GET 방식 HTML Form - POST 방식 HTTP Message Body - POST 방식 * 데이터 형식은 주로 JSON 사용 (레거시 코드는 간혹 XML을 사용하지만 최근에는 대부분 JSON) 1. 쿼리 파라미터 - GET 방식 메시지 바디 없이 URL에 쿼리 파라미터를 추가해서 데이터를 전달하는 방식 (URL에 그대로 노출되므로 주로 검색, 필터, 페이징 등에 사용) URL에 ?을 시작으로 보내고 &를 통해 추가 파라미터를 구분 ex) http://localhost:8080/example?id=jaimemin&blog=tistory 쿼리 파라미터로 전달된 내용 -> id = jaimemin, blog = tistory 1.1 Servlet에서 조회..

Spring 2021.06.02

빈 스코프 (Bean Scope)

빈 스코프 정의 스프링 빈이 존재할 수 있는 범위 즉, 생성 및 소멸하는 구간 스프링에서 지원하는 빈 스코프 싱글턴 (Singleton): Default 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 (Prototype): 스프링 컨테이너가 프로토타입 빈의 생성과 의존관계 주입 그리고 초기화까지만 관여, 그 이상 관리하지 않는 짧은 범위의 스코프 웹 관련 스코프 request: 웹 요청이 들어오고 나갈 때까지 유지되는 스코프 session: 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 application: 웹의 ServletContext와 같은 범위로 유지되는 스코프 websocket: 웹 소켓과 동일한 생명주기를 가지는 스코프 * 싱글턴의 경우 클래스의 ..

Spring 2021.05.26

스프링 빈 생명주기 (Spring Bean Life Cycle)

스프링 빈 라이프 사이클 요약 객체 생성 -> 의존관계 주입 (생성자 주입 제외) 생성자 주입의 경우 객체 생성과 함께 의존관계 주입 스프링 빈 이벤트 라이프 사이클 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 메서드 호출 -> 애플리케이션에서 빈 사용 -> 소멸 전 콜백 메서드 호출 -> 스프링 종료 스프링은 의존관계 주입이 완료될 경우 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려줌 또한, 스프링 컨테이너가 종료되기 직전에 소멸 전 콜백 메서드를 통해 소멸 시점을 알려줌 보다 자세한 내용은 https://knpcode.com/spring/spring-bean-lifecycle-callback-methods/ 참고! * 스프링 빈 라이프 사이클을 압축시키기 ..

Spring 2021.05.25

@Autowired - 의존관계 주입

의존관계 주입 방법 생성자 주입 setter 주입 필드 주입 일반 메서드 주입 * 주의할 점: 스프링 컨테이너가 관리하는 스프링 빈이어야 @Autowired 어노테이션을 통해 의존관계가 자동 주입됨 생성자 주입 방법 (Constructor Injection) 생성자를 통해서 의존 관계를 주입받는 방법 생성자 호출 시점에 딱 한 번만 호출되는 것이 보장 불변, 필수 의존관계에 사용 (대부분 불편, 필수 의존관계) 따라서, 웬만하면 생성자 주입 방법을 사용할 것을 권장 (하단에 부연설명 추가) 생성자가 하나만 정의되어 있고 스프링 빈이라면 @Autowired 어노테이션 생략 가능 * 생성자 주입 방법에만 의존관계 주입받을 필드에 final 키워드 사용 가능 생성자 주입 방법 1 생성자 주입 방법 2 (Lom..

Spring 2021.05.18

@ComponentScan - 컴포넌트 스캔

컴포넌트 스캔 설정 정보 없이 자동으로 스프링 빈을 등록해주는 어노테이션 @Component 어노테이션이 붙은 모든 클래스들을 Spring Bean으로 자동 등록 basePackages 키워드를 통해 ComponentScan 대상 범위를 지정할 수 있지만, 디폴트는 @ComponentScan이 붙은 클래스의 패키지가 컴포넌트 스캔 시작 위치가 되므로 @ComponentScan 어노테이션이 붙은 클래스의 위치를 프로젝트 최상단에 두는 것을 추천 excludeFilters 키워드를 통해 원하지 않는 설정 정보를 ComponentScan 대상에서 제외 가능 @Bean 어노테이션을 통해 직접 의존관계를 명시하는 대신 @Autowired 어노테이션을 통해 의존관계 자동 주입 @Autowired를 지정할 경우 스프..

Spring 2021.05.17

Spring Boot Intellij IDEA MySQL 연동 에러 발생할 경우

에러 메시지: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Intellij IDEA에서 H2 데이터베이스가 아닌 MySQL 데이터베이스와 연동할 경우 위와 같은 메시지가 출력되며 에러가 발생하는 경우가 있습니다. 이를 해결하기에 앞서 우선 아래와 같은 설정이 완료되었는지 확인해야합니다. build.gradle application.properties 위와 같이 설정이 되었음에도 불구하고 에러가 발생한다면 우선 우측의 Database 탭을 누르고 + 버튼 -> Data Source -> MySQL 클릭 후 커넥션 정보를 확인한 뒤 Test Conn..

Spring 2019.10.03