전체 글
-
[05] ApplicationContext - Bean의 scopeSpring/Spring 핵심 기술 2020. 4. 14. 09:48
[Bean의 Scope] Bean에는 여러 가지 scope가 있고 default는 singleton scope입니다. scope에 대한 여러 가지 테스트를 위해 먼저 두 개의 bean과 application runner를 등록합니다. 먼저 Proto bean입니다. @Component public class Proto { } 다음으로 Proto를 주입받아 getter로 제공하는 Single Bean입니다. @Component public class Single { @Autowired Proto proto; public Proto getProto() { return proto; } } 마지막으로 ApplicationRunner를 구현한 AppRunner입니다. 여기서는 Single bean과 Proto b..
-
[04] ApplicationContext - @Component와 Component ScanningSpring/Spring 핵심 기술 2020. 4. 14. 09:16
Component scanning은 @Component(@Controller, @Service, @Repository, @Configuration)가 붙어있는 class를 찾아서 bean을 생성하여 application context에 등록하는 작업을 말합니다. @ComponentScan을 사용하여 원하는 package로 부터 component scanning을 할 수 있습니다. @ComponentScan 어노테이션의 basePackageClasses 옵션에 class file을 지정하면 BeanFactoryPostProcessor를 상속 받는 ConfigurationClassPostProcessor에 의해 class file이 위치한 package 부터 하위의 모든 package에 대해 componen..
-
[03] ApplicationContext - @Autowired를 통한 Dependency InjectionSpring/Spring 핵심 기술 2020. 4. 13. 12:02
생성하고자 하는 bean을 A라 하고 A를 생성하기 위해 필요한 또다른 bean을 B라 할 때 @Autowired는 bean A 생성 시 bean B를 IoC(Inversion of Control) Container로 부터 주입받기 위한 annotation입니다. 반드시 IoC Container에 Bean으로 등록된 객체만이 @Autowired를 통해 다른 Bean들에게 주입될 수 있습니다. 예를 들어 다음과 같이 Bean이 아닌 객체의 class가 있고 public class PetRepository { public Pet save(Pet pet) { return null;} } Bean을 생성할 때 위의 PetRepository class로 생성한 Bean이 아닌 객체를 주입하려고 시도해보면 @Ser..
-
[02] ApplicationContext - 다양한 Bean 설정 방법Spring/Spring 핵심 기술 2020. 4. 12. 11:18
Inversion of Control Container의 역할은 다음과 같습니다. Bean 생성 Bean과 Bean 사이의 의존관계 설정 사용자가 요청할 시 Bean을 제공 Inversion of Control Container를 만들기 위해서는 Bean 설정 file이 필요합니다. Bean 설정 file에는 XML 설정 file과 JAVA 설정 file이 있는데 최근에는 JAVA 설정 file을 사용하는 것이 추세입니다. Spring에서 Inversion of Control Container 기능은 ApplicationContext가 담당하고 있으며 XML, JAVA 각각의 Bean 설정 file에 따른 ApplicationContext 구현체는 다음과 같습니다. XML : ClassPathXmlApp..
-
[01] Inversion of Control(IoC) 컨테이너와 BeanSpring/Spring 핵심 기술 2020. 4. 12. 11:18
Inversion of Control에 대한 개념을 확인하고자 wiki 검색 결과는 다음과 같습니다. 제어 반전, 제어의 반전, 역제어는 프로그래머가 작성한 프로그램이 재사용 라이브러리의 흐름 제어를 받게 되는 소프트웨어 디자인 패턴을 말한다. 줄여서 IoC(Inversion of Control)이라고 부른다. 전통적인 프로그래밍에서 흐름은 프로그래머가 작성한 프로그램이 외부 라이브러리의 코드를 호출해 이용한다. 하지만 제어 반전이 적용된 구조에서는 외부 라이브러리의 코드가 프로그래머가 작성한 코드를 호출한다. 설계 목적상 제어 반전의 목적은 다음과 같다: 작업을 구현하는 방식과 작업 수행 자체를 분리한다. 모듈을 제작할 때, 모듈과 외부 프로그램의 결합에 대해 고민할 필요 없이 모듈의 목적에 집중할 수..
-
[00] Spring Boot Project의 설정Spring/Spring 핵심 기술 2020. 4. 11. 09:19
백기선님의 스프링 프레임워크 핵심기술 강좌를 정리하여 블로깅하고자 합니다. IDE는 IntelliJ community version을 사용합니다. 실습을 위해 Gradle project로 spring boot project 만들어 보도록 하겠습니다. (Gradle은 JAVA, C, C++, Python 등의 다양한 언어를 지원하는 build 자동화 system입니다.) IntelliJ를 실행 후 Create New Project를 클릭하여 새 project를 만듭니다. Gradle을 선택하시고 Project_SDK에 현재 JAVA version을 확인합니다. (여기서는 1.8을 사용하겠습니다.) Additional Library and Frameworks에는 Java만 선택하도록 합니다. Next를 눌러..