스프링/스프링 핵심원리

컴포넌트 스캔과 의존관계 자동주입하기 지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. 예제에서는 몇개가 안되었지만, 이렇게 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기도 귀찮고, 설정 정보도 커지고, 누락하는 문제도 발생한다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또 의존관계도 자동으로 주입하는 @Autowired 라는 기능도 제공한다 @Component 애노태이션이 붙은 클래스를 찾아서 자동으로 스프링 빈으로 등록해준다 @Configuration 애노테이션 가면 @Component가 붙어있다 Find in files : ctrl + shi..
싱글톤 컨테이너 @Test @DisplayName("스프링 컨테이너와 싱글톤") void springContainer(){ //AppConfig appConfig = new AppConfig(); ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); // MemberService memberService1 = appConfig.memberService(); MemberService memberService1 = ac.getBean("memberService", MemberService.class); //MemberService memberService2 = appConfig.memberService(); Membe..
웹 애플리케이션과 싱글톤 싱글톤 패턴 : 객체가 자바 JVM안에 하나만 있어야 한다 고객이 3번 요청하면 객체가 3개 생성됨 public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer(){ AppConfig appConfig = new AppConfig(); //1.조회 : 호출할 때마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //1.조회 : 호출할 때마다 객체를 생성 MemberService memberService2 = appConfig.memberService(); //1.조회 : 호출할 때마다 객체를 생성 MemberSer..
스프링 컨테이너 생성 스프링 컨테이너가 생성되는 과정을 알아보자. ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 를 스프링 컨테이너라 한다. ApplicationContext 는 인터페이스이다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 직전에 AppConfig 를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것이다. 자바 설정 클래스를 기반으로 스프링 컨테이너( ApplicationContext )를 만들어보자. new AnnotationConfigA..
새로운 할인 정책 개발 주문한 금액의 %를 할인해주는 새로운 정률 할인 정책을 추가 ctrl + shift + T : 테스트 클래스가 자동으로 생성됨 class RateDiscountPolicyTest { DiscountPolicy discountPolicy = new RateDiscountPolicy(); @Test @DisplayName("VIP는 10%할인이 적용되어야한다") void vip_o(){ //given Member member = new Member(1L, "memberVIP", Grade.VIP); //when int discount = discountPolicy.discount(member,10000); //then Assertions.assertThat(discount).isEqu..
gradle 설정 변경하면 코끼리 눌러줘야한다. 아니면 reload 클릭. 비즈니스 요구 사항 설계 회원 도메인 설계 회원 도메인 요구사항 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) ;까지 자동 완성 : ctrl + shift + enter 동작을 하면 클라이언트는 MemberServiceImpl 이라는 회원 서비스를 사용하게되고, 회원 서비스는 메모리 회원 저장소를 참조. 객체 다이어그램은 동적. 클래스 다이어그램은 동적. psvm 치고 엔터하면 new Member(1L, "memberA", Grade.VIP); ctrl + alt(option) + V 하면 Member membe..
ORM 기술 : 자바 객체를 디비에 편하게 저장하고 꺼내는 기술 (쿼리 없이) EJB : 너무 복잡하고 어렵고 느려 -> 스프링, 하이버네이트 등장 스프링은 설정이 너무 어려워 - > 톰캣이 내장된 스프링 부트 등장 스프링이란? 스프링 데이터 : 기본적인 crud(등록,수정,삭제,조회)는 다 비슷함. 이런것들을 편리하게 사용할 수 있게 도와줌 스프링 세션 : 세션 기능을 편하게 사용할 수 있게 도와줌 스프링 시큐리티 : 보안과 관련됨 스프링 Rest Docs : API문서화를 편리하게 해줌 스프링 배치 : 배치 처리에 특화된 기술 스프링 클라우드 : 클라우드에 특화된 기술 스프링 프레임워크 • 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타 • 웹 기술: 스프링 MVC, 스프링 WebFlux ..
born-A
'스프링/스프링 핵심원리' 카테고리의 글 목록