1. 큰 흐름 확인 1. 클라이언트 요청 2. controller에서 올바른 위치로 전송 3. service에서 비즈니스 로직을 실행 4. 비즈니스 로직 안에 있는 repository 로직을 실행 5. repository를 사용하여 데이터베이스 접근 2. 코드 확인
이 글은 김영한의 스프링 강의를 보고 작성한 글입니다 @Autowired 필드 명 매칭 @Qualifier -> @Qualifier끼리 매칭 -> 빈 이름 매칭 @Primary 사용 현재 상황 @Component public class FixDiscountPolicy implements DiscountPolicy{ private int discountFixAmount = 1000; // 1000원 할인 @Override public int discount(Member member, int price) { if(member.getGrade() == Grade.VIP){ return discountFixAmount; }else{ return 0; } } } @Component public class FixD..
모든 자바 클래스의 컴포넌트를 스캔하면 시간이 너무 오래걸리기 때문에 꼭 필요한 위치부터 탐색을 할 수 있다.(그 많은 라이브러리들 까지 다 탐색하면 곤란하니까...) 탐색 패키지의 위치 지정 시작 위치 지정 @ComponentScan( basePackages = "hello.core", // 탐색 패키지의 위치 지정 } basePackages : 탐색할 패키지의 시작 위치를 지정한다. 이 패키지를 포함해서 하위 패키지를 모두 탐색한다. @ComponentScan( basePackages = {"hello.core", "hello.service"} } 이렇게 여러 시작 위치를 지정할 수 도 있다. 지정 클래스를 시작위치로 정하기 @ComponentScan( basePackages = "hello.core..
이 글은 김영한 님의 스프링 강의를 듣고 작성한 글입니다 1. 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 위 객체의 인스턴스를 생성하는 순간 스프링 컨테이너가 만들어진다. ApplicationContext는 인터페이스이다(다형성이 적용되어있음) XML 기반으로 만들 수도 있지만 요즘은 잘 사용하지 않고 거의 어노테이션 기반으로 만든다 생성 과정 2. 스프링 빈 등록 빈 이름 : 메서드 이름 빈 이름을 직접 부여할 수도 있지만 겹치면 오류가 발생한다 빈 객체 : 리턴하는 객체 3. 의존관계 설정
김영한의 스프링 강의에 저작권이 있습니다. 스프링이란? 필수 스프링 프레임워크 스프링 부트 선택 스프링 데이터 스프링 세션 스프링 시큐리티 스프링 Rest Docs 스프링 배치 스프링 클라우드 스프링 프레임워크 핵심 기술 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹기술 스프링 MVC, 스프링 WebFlux 데이터 접근 기술 트랜잭션 JDBC ORM 지원 XML 지원 기술통합 캐시, 이메일, 원격접근, 스케줄링 테스트 스프링 기반 테스트 지원 언어 코틀린 그루비 스프링 부트 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본!! 단독으로 실행할 수 있는 스프링 애플리케이션 쉽게 생성!!(https://start.spring.io/) 톰캣 같은 웹 서버를 내장해서 웹서버 설치 안해도 괜찮음! st..