Backend/Spring 36

[스프링핵심원리 - 기본편]Bean 조회하기

스프링 빈 출력 확인하기 public class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("모든 빈 출력하기") void findAllBean(){ String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { Object bean = ac.getBean(beanDefinitionName); System.out.println("name = " + ..

Backend/Spring 2023.03.19

[스프링핵심원리 - 기본편]스프링 컨테이너와 빈

스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 'ApplicationContext' 를 스프링 컨테이너라 한다. 'ApplicationContext' 는 인터페이스이다. 'AppConfig' (@Configuration)를 사용했던 방식이 어노테이션기반의 자바설정 클래스로 스프링 컨테이너를 만든 것이다. ※ 더정확히는 스프링 컨테이너를 부를때 'BeanFactory', 'ApplicationContext'로 구분해서 이야기한다. 스프링 컨테이너의 생성과정 스프링 컨테이너 생성 'new AnnotationConfigApplicationContext(AppCon..

Backend/Spring 2023.03.19

[스프링핵심원리 - 기본편]스프링컨테이너

스프링 컨테이너 ApplicationContext를 스프링 컨테이너라 한다. 기존에는 개발자가 AppConfig를 사용해서 직접 객체를 생성하고 DI를 했지만, 이제부터는 스프링 컨터이너를 통해서 사용한다. 스프링 컨테이너는 @Configration이 붙은 AppConfig를 설정(구성) 정보로 사용한다. 여기서 @Bean이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다. 스프링 빈은 @Bean이 붙은 메서드의 명을 스프링 빈의 이름으로 사용한다. ex) memberService, orderService 이전에는 개발자가 필요한 객체를 AppConfig를 사용해서 직접 조회했지만, 스프링 컨테이너를 통해서 필요한 스프..

Backend/Spring 2023.03.18

[스프링핵심원리 - 기본편]IOC, DI, 컨테이너

제어의 역전 IOC(Inversion of Control) 기존프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. 한마디로 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. 개발자 입장에서는 자연스러운 흐름이다. 반면에 AppConfig로 설정시 구현객체는 자신의 로직을 실행하는 역할만 담당한다. 프로그램의 제어 흐름은 이제 AppConfig가 가져간다. ex) OrderServiceImpl의 구현객체는 AppConfig에서 정의 프로그램에 대한 흐름에 대한 권한은 모두 AppConfig가 가지고있다. 이렇듯 프로그램의 제어흐름을 직접제어하는것이 아니라 외부에서 관리하는 것을 제어의 역전(IOC)이라고한다. 의존관계의 주입 DI(Dependency Inj..

Backend/Spring 2023.03.18

[스프링핵심원리 - 기본편]SOLID

좋은 객체 지향 설계 5가지 원칙 정리 SRP : 단일 책임 원칙(Single responsibility principle) 한 클래스는 하나의 책임만 가져야한다. 변경이 있을때 파급 효과가 적으면 단일 책임원칙을 잘따른것 OCP : 개방-폐쇄 원칙(Open/closed principle) *중요! 소프트웨어 요소는 확장에는 열려 있으나, 변경에는 닫혀있어야한다. 인터페이스를 구현한 새로운 클래스를 하나 만들어 새로운 기능을 구현(다형성) LSP : 리스코프 치환 원칙(Liskov substitution principle) ISP : 인터페이스 분리 원칙(Interface segregation principle) 각기능에 맞는 인터페이스 분리 인터페이스가 명확해지고, 대체 가능성이 높아진다. DIP : ..

Backend/Spring 2023.03.18

[스프링핵심원리 - 기본편]

스프링 프레임워크 핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술 : 트랜잭션, JDBC, ORM지원, XML지원 기술 통합 : 캐시, 이메일, 원격접근, 스케줄링 테스트 : 스프링 기반 테스트 지원 언어 코틀린, 그루비 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용 스프링 부트 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성 Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨 손쉬운 빌드 구성을 위한 Starter 종속성 제공 - Spring Boot 사용시 라이브러리 하나만 설정을 하면 관련된 라이브..

Backend/Spring 2023.03.13