프로그래밍공부/Spring

    Spring Bean의 개념과 생성원리 및 과정

    1. Spring Bean이란 ? Spring Bean은 Spring IoC 컨테이너가 관리하는 자바 객체로서 컨테이너에 의해 생명주기가 관리되는 객체를 의미한다. IoC 컨테이너 안에 들어있는 객체로 필요할 때마다 IoC 컨테이너에서 가져와서 사용한다. 어노테이션인 @Bean을 사용하거나 xml 설정을 통해 일반 객체를 Bean으로 등록이 가능하다. 즉, Spring 에서는 Bean은 ApplicationContext가 알고 있는 객체이며 ApplicationContext가 생성하고 직접 관리해주는 객체를 의미한다. XML 기반의 Bean 정의 방법들 2. Spring Bean의 생명 주기 객체 생성 -> 의존 설정 -> 초기화 -> 사용 -> 소멸 과정의 생명 주기를 가지고 있다. Bean은 스프링 ..

    스프링 컨테이너

    1. 스프링 컨테이너의 생성 // 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 위의 코드에서 ApplicationContext는 스프링 컨테이너이자 인터페이스이다. 스프링 컨테이너는 XML 기반으로 만들 수 있고 어노테이션 기반의 자바 설정 클래스로도 만들 수 있다. 파라미터를 통해 구성 정보를 지정하고 파라미터의 자바 설정 클래스를 기반으로 스프링 빈을 등록한다. 이때, 기본적으로 빈의 이름은 메소드 이름을 사용하며 빈 이름을 직접 부여할 수도 있다. 그러나 빈의 이름은 항상 다른 이름을 부여해야 하며 같은 이름을 부여하면 다른 빈이 무시되거나 기존 빈을..

    IoC, DI 그리고 Container

    1. 제어의 역전(Inversion of Control) IoC ? 프로그램의 제어 흐름을 클라이언트 구현 객체가 제어하지 않고 외부의 구성 영역에서 가져가는 것을 제어의 역전이라고 한다. 기존 프로그램들은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고 연결하고 실행되어 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. AppConfig의 등장으로 구현 객체는 자신의 로직을 실행하는 역할만 담당하며 프로그램 흐름 제어는 이제 AppConfig가 가져간다. 따라서 ~ServiceImpl은 필요한 인터페이스들을 호출하지만 어떤 구현 객체들이 실행될지는 알 수 없다. 프로그램에 대한 제어 흐름에 대한 권한은 모두 AppConfig가 가지고 있고 구현체 역시 AppConfig가 생성한다. ..

    스프링이란 - 2

    1. 스프링과 객체 지향 스프링에서 객체 지향의 다형성 특징이 가장 중요하며, 스프링은 다형성을 극대화해서 이용할 수 있게 도와준다. 스프링에서 이야기 하는 제어의 역전(IoC), 의존 관계 주입(DI)는 다형성을 활용해 역할과 구현을 편리하게 다룰 수 있도록 지원한다. 2. 좋은 객체 지향 설계의 5가지 원칙(SOLID) 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리하였으며, 스프링은 이런 원칙들을 극대화 할 수 있다. 객체지향의 다형성 특징만으로 밑의 원칙인 OCP, DIP를 지킬 수 없으며 스프링 내 어떠한 기능들을 통해 이러한 원칙이 지켜질 수 있도록 해야한다. 1) SRP(단일 책임 원칙, single responsibility principle) 한 클래스는 하나의..