본문 바로가기

SPRING

[스프링| 스프링 핵심 원리 | 기본편 | 싱글톤 컨테이너] 싱글톤 컨테이너, 싱글톤 방식의 주의점 @Test // JUnit5에서 테스트 메서드임을 나타내는 어노테이션@DisplayName("스프링 컨테이너와 싱글톤") // 테스트 메서드의 이름 또는 설명을 지정void springContainer() { // 테스트 메서드 선언 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); // 스프링 컨테이너를 초기화하고, AppConfig 클래스를 설정 정보로 사용 //1. 조회: 호출할 때 마다 같은 객체를 반환 MemberService memberService1 = ac.getBean("memberService", MemberService.class); // 스프링 컨테이너에서 "memberSe.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 싱글톤 컨테이너] 웹 애플리케이션과 싱글톤 public class SingletonTest { // JUnit 테스트 클래스 선언 @Test // 테스트 메서드에 대한 설명을 제공 @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); // AppConfig 클래스의 인스턴스를 생성 MemberService memberService1 = appConfig.memberService(); // memberService() 메서드를 호출하여 MemberService 인스턴스를 생성 MemberService memberService2 = appCon.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 컨테이너와 스프링 빈]자바코드, XML / 스프링 빈 설정 메타 정보 - BeanDefinition public class XmlAppContext { @Test void xmlAppContext() { ApplicationContext ac = new GenericXmlApplicationContext("appConfig.xml"); MemberService memberService = ac.getBean("memberService", MemberService.class); assertThat(memberService).isInstanceOf(MemberService.class); }} 스프링 빈과 비교@Configurationpublic class AppConfi.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 컨테이너와 스프링 빈]BeanFactory와 ApplicationContext BeanFactoryBeanFactory는 스프링 프레임워크의 핵심 컨테이너 중 하나로, 애플리케이션 내에서 빈(bean) 객체를 생성하고 관리하는 기능을 담당한다. BeanFactory는 ApplicationContext 인터페이스의 상위 인터페이스로, 빈을 관리하고 의존성 주입(Dependency Injection)을 처리하는 기본 기능을 제공한다.주요 기능빈의 생성과 관리: BeanFactory는 빈의 정의를 바탕으로 빈 인스턴스를 생성하고, 이를 애플리케이션 전반에 걸쳐 관리한다. 빈은 주로 XML 파일이나 애너테이션을 통해 정의되며, BeanFactory는 이러한 정의를 읽어서 빈 객체를 생성한다.의존성 주입: 객체들의 의존성을 외부에서 관리하고 주입해주는 기능을 수행한다. 이를 통해 코드는 더.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 컨테이너와 스프링 빈]스프링 컨테이너에 등록된 빈 조회 public class ApplicationContextBasicFindTest { // 스프링 빈 조회 기능을 테스트하는 클래스 정의 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); // 스프링 컨테이너를 초기화하고, AppConfig 클래스의 설정 정보를 로딩 @Test // JUnit 테스트 메소드임을 나타내는 어노테이션 @DisplayName("빈 이름으로 조회") // 테스트의 이름을 설정 void findBeanByName() { // 빈 이름으로 조회하는 테스트 메서드 MemberService memberService = ac.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 컨테이너와 스프링 빈]스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해2 - 객체 지향 원리 적용]스프링으로 전환하기 @Configuration// 이 클래스가 스프링의 설정 정보를 담고 있는 클래스임을 선언한다. 스프링 컨테이너는 이 클래스를 설정 정보로 사용한다.public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } // MemberService 타입의 빈을 생성하고, 이 빈은 MemberRepository를 의존성으로 주입받는다. @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } .. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해2 - 객체 지향 원리 적용]IoC, DI, 그리고 컨테이너 제어의 역전 (Inversion of Control, IoC)제어의 역전은 프로그래밍에서 주로 사용되는 디자인 패턴 중 하나로, 프로그램의 흐름 제어를 사용자가 아닌 외부 시스템이 관리하는 원칙을 말해. 전통적인 프로그래밍에서는 사용자가 프로그램의 흐름을 제어하고, 언제 어떤 객체를 생성하고 사용할지 직접 관리하는데, IoC에서는 이러한 제어권이 프레임워크 같은 외부 시스템으로 넘어간다고 생각하면 돼.예를 들어, 스프링 프레임워크에서는 개발자가 직접 객체를 생성하고 소멸시키는 대신, 스프링 컨테이너가 이런 작업들을 대신 관리해주는데, 이렇게 되면 개발자는 비즈니스 로직에 더 집중할 수 있고, 코드는 더욱 깔끔하고 유지 관리가 쉬워진다. 라이브러리라이브러리는 개발자가 작성하는 애플리케이션 코드에서 호출되어.. 더보기