JAVA/Spring(111)
-
빈(Bean)의 스코프
1. 스코프의 종류 싱글톤 : 어떤 클래스의 인스턴스 개수가 단 한개만 생성하는 디자인 패턴 프로토타입 : 어떤 클래스의 인스턴스를 생성할때마다 새로 생성하는 패턴 웹 관련 스코프 Request : 웹 요청이 들어오고 나갈때까지 유지되는 스코프 Session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 2. 스프링에서 빈의 스코프는 기본적으로 싱글톤 예를 들어 Single이라는 클래스에 @Component 어노테이션을 적용하면 Single 클래스는 빈으로 등록됩니다. 이때 빈의 스코프를 따로 지정하지 않으면 싱글톤 타입으로 설정됩니다. @Component public class Single { } @SpringBootT..
2022.08.31 -
[Spring][IoC] @Autowired 어노테이션
1. @Autowired 어노테이션은 무엇인가? 필요한 의존 객체의 "타입"에 해당하는 빈을 IoC 컨테이너에서 탐색하여 주입하는 어노테이션 옵션 required : 기본값 true, false로 설정하게 되면 빈을 탐색하지 못할시 주입하지 않고 넘어갑니다. 2. @Autowired 어노테이션 사용 위치 생성자 세터(setter) 필드 // 주입 방법 1 @Autowired public BookService(BookRepository bookRepository){ this.bookRepository = bookRepository; } // 주입 방법 2 @Autowired public void setBookRepository(BookRepository bookRepository){ this.bookRep..
2022.08.29 -
[springboot][Gradle] 자동 설정 만들기 #2 @ConfigurationProperties
이전글에서는 외부 라이브러리 클래스의 빈을 등록하기 위해서 설정 파일 클래스를 정의하고 빈을 정의하였습니다. 이번글에서는 외부 라이브러리와 동일한 이름의 빈을 프로젝트에 정의하고 어떤 결과가 출력되는지 봅니다. 그리고 동일한 이름의 빈을 프로젝트에 명시적으로 정의하지 않고 설정 파일을 이용해서 외부 라이브러리의 빈의 값을 설정하는 방법을 알아봅니다. 1. 자동설정의 문제점 : 명시적인 빈의 무시 외부 라이브러리 자동설정 외부 라이브러리인 "yonghwan-spring-boot-starter"의 Holoman 클래스 빈을 다음과 같이 정의되어 있다고 가정합니다. @Configuration public class HolomanConfiguration { @Bean public Holoman holoman()..
2022.08.17 -
컴포넌트 스캔(ComponentScan)과 빈(Bean) 설정
스프링 빈 설정 파일 구현 자바 설정 파일을 이용하여 빈 객체를 생성하는 방법에는 두가지 방법이 있습니다. @Bean 어노테이션을 이용한 빈 설정 @ComponentScan 어노테이션을 이용한 빈 설정 java 파일에 빈 설정 1. @Bean 어노테이션을 이용한 빈 설정 @Configuration public class ApplicationConfig { @Bean public BookService bookService(){ return new BookService(bookRepository()); } @Bean public BookRepository bookRepository(){ return new BookRepository(); } } 설정 파일 클래스를 생성한 다음 @Configuration 애노..
2022.08.15 -
[springboot][Gradle] 자동 설정 만들기 #1 Starter와 Auto-Configure
개요 스프링부트는 필요한 의존성 라이브러리를 가져와서 사용할 수 있습니다. 시작하고자 하는 애플리케이션에 @EnableAutoConfiguration 어노테이션을 적용하면 외부 라이브러리들의 정의된 빈들을 IOC 컨테이너에 등록하여 사용할 수 있습니다. 이러한 @EnableAutoConfiguration 어노테이션은 대개 @SpringBootApplication 어노테이션에 같이 정의되어 있습니다. 이 글에서는 Gradle 빌드 도구를 기반으로 외부 라이브러리를 만들고 로컬 메이븐 저장소에 저장한다음 현재 작업하는 프로젝트에 의존성 라이브러리로써 가져와서 빈을 등록하고 출력하는 것을 실습해보겠습니다. 1. 자동 설정 구현 1.1 프로젝트 추가 1.2 의존성 추가, build.gradle 파일 depend..
2022.08.15 -
[springboot] 자동 설정(Auto-Configuration) 이해
1. 자동 설정 개요 빈(Bean)의 두 단계 등록 1단계 : @ComponentScan 2단계 : @EnableAutoConfiguration @ComponentScan @Component @Configuration, @Repository, @Service, @Controller, @RestController @EnableAutoConfiguration spring.factories org.springframework.boot.autoconfigure.EnableAutoconfiguration @Configuration @ConditionalOnXxxYyyZzz 2. @ComponentScan 애플리케이션이 실행되면 @Component 어노테이션을 탐색합니다. 탐색 위치는 @ComponentScan 어..
2022.08.15