@Component와 @bean 어노테이션 이전 포스팅에서 @Configuration과 @Bean 어노테이션에 대해 알아보았다. [Spring] @Configuration, @Bean의 동작 방식(싱글톤) @Configuration, @Bean Spring에서 Bean을 수동으로 등록하기 위해서 설정 클래스 위에 @Configuration 어노테이션을 추가하고, @Bean을 사용해 수동으로 빈을 등록, 관리할 수 있게 된다. 이때 내부적으로 어떤 devmoony.tistory.com 오늘은 @ComponentScan과 @Component 와 @Bean 어노테이션의 서로 다른 용도?에 대해 작성하는 글이다. @ComponentScan @ComponentScan이란 @Component, @Controller..
@Configuration, @Bean Spring에서 Bean을 수동으로 등록하기 위해서 설정 클래스 위에 @Configuration 어노테이션을 추가하고, @Bean을 사용해 수동으로 빈을 등록, 관리할 수 있게 된다. 이때 내부적으로 어떤식으로 동작하는지 확인하면서 @Configuration과 @Bean을 파헤쳐보는 것을 목적으로 한다. 해당 글은 김영한님의 온라인강의 [스프링 핵심 원리 - 기본편]의 내용을 기반으로 작성하였습니다. @Configuration / @Bean 수동으로 스프링 컨테이너에 Bean을 등록하기 위한 어노테이션이다. 1개 이상의 @Bean을 제공하는 클래스의 경우 반드시 @Configuration을 명시해 주어야 싱글톤이 보장된다. 유지보수성을 높이기 위해 애플리케이션 전범..
Spring - IoC컨테이너에서 관리되고 있는 Bean 목록 조회하기 Spring에는 IoC 컨테이너에서 DI (Dependenct Injection)을 관리하는데 이때 관리되고 있는 Bean 객체를 조회하는 방법을 설명한다. 실제로 프로젝트를 할때 ApplicationContext에서 직접 Bean을 조회할 일은 흔하지 않지만 스프링 내부적으로 동작하는 부분의 이해를 목적으로 한다. 1. 스프링 컨테이너에 등록된 모든 Bean 조회 스프링 내부적으로 관리되고 있는 Bean 및 직접등록한 애플리케이션 Bean을 모두 조회하는 방법이다. public class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new Annotati..
JPA란 무엇인가? 약 2년전에 JPA 강의를 결제해놓고 제대로 못보다가 최근들어 JPA에 대해 다시 공부를 시작하였다. 더 깊게 공부하기 앞서 JPA의 개념에 대해 정리해보려 한다. 해당 글은 온라인강의 [김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편] 및 타 블로그 글을 참고하였습니다. JPA(Java Persistence API)란 자바의 ORM을 위한 표준 기술로 Hibernate, Spring JPA, EclipseLink등과 같은 구현체가 있다. 이것의 표준 인터페이스가 JPA이다. JPA에 앞서 ORM(Object Relational Mapping)에 대해 알아보자 ORM이란? ORM(Object Relational Mapping)은 자바의 객체와 관계형데이터베이스를 매핑해주는 도..
DTO vs VO vs Entity 우리가 Spring Framework를 사용하면서 비슷한 개념이라고 생각했던 DTO, VO, Entity의 개념 및 차이점을 정리한다. 1. DTO (Data Transfer Object) DTO(Data Transfer Object)는 데이터 전송(이동) 객체(Java Beans)라는 의미를 갖는다. DTO는 계층(Layer)간 데이터를 주고 받을 때(주로 비동기) 사용하며, 주로 View와 Controller 사이에서 데이터를 주고 받을 때 활용하고 로직을 갖지 않는 순수한 데이터 객체이며, getter/setter 메소드만을 갖는다. 아래코드는 setter 를 가지는 경우로 가변 객체로 활용한 경우이다. public class StudentDTO { private..
Spring - WebFlux란? WebFlux는 Spring 5에서 새롭게 추가된 Reactive-Stack의 웹 프레임워크이며, 클라이언트/서버에서 리액티브(reactive) 애플리케이션 개발을 위한 논블로킹 리액티브 스트림을 지원한다. 2017년 8월에 릴리즈되어 Spring5에 새롭개 추가된 WebFlux가 생긴 이유는, 적은 양의 스레드와 최소한의 하드웨어 자원으로 동시성을 핸들링 하기 위해 만들어졌다. 함수형 프로그래밍 때문이다. Java5에서 RestController나 unit test가 만들어지고, Java8에서 함수형 API를 위한 람다식이 추가됐는데 이는 논블로킹(non-blocking)어플리케이션 API의 토대가 됐다. WebFlux의 등장 WebFlux는 논블로킹으로 동작하는 웹 ..
목차 Controller와 RestController의 차이점 Spring MVC의 Work Flow @RestController 개념 및 예제 ResponseEntity 개념 및 예제 일반적인 API는 반환하는 리소스에 Value값만 있지 않습니다. 상태코드, 상태 메시지 등등 데이터들이 있는데 이러한 Data를 return하는 것을 주용도로 사용하는 것이 ResponseEntity 클래스 입니다. 먼저 ResponseEntity를 배우기 전에 Controller와 RestController의 차이점을 알아보겠습니다. 1. Controller와 RestController의 차이점 - Spring MVC Controller와 Restful Controller의 가장 큰 차이점은 HTTP Response ..
태그로 저장된 문자열 출력하기 '저장' 이나 '추가' 와 같은 문자열은 웹 페이지에서 반복해서 사용하게 되는 문자열 중 하나이다. 저장 닫기 이러한 문자열을 JSP에 하드코딩하게 되면 다음과 같은 문제가 발생할 수 있다. 반복적인 문자열을 변경하여 통일 시키려고 할 때 ex) '저장' -> '저장하기' 다국어 지원 (한국을 제외한 나라에서 접속했을 때 '닫기' -> 'Close' 로 구현해야 할 때) 위 문제를 해결하기 위해 View 코드에서 사용되는 문자열을 언어별로 파일에 보관하여 언어에 따라 properties 파일에서 읽어와 출력하는 방법이 있다. 수행 순서 언어별로 문자열을 담은 메시지 properties 파일을 작성한다. properties 파일에서 값을 읽어오는 MessageSource 빈을..