웹 브라우저에서의 URL 요청은 스프링부트의 내장 톰캣 서버를 거쳐 Controller에 전달된다.Controller는 컨트롤러 클래스 내에서 해당 URI가 매핑된 메서드를 찾아 실행한다.컨트롤러 클래스 내의 메서드 반환값에 따라 다음 동작으로 나뉘어진다.정적 페이지
Controller: 웹 MVC의 컨트롤러 역할Service: 핵심 비지니스 로직 (회원가입, 탈퇴 등)Repository: DB에 접근, 도매인 객체를 DB에 저장/관리Domain: 비지니스 도메인 객체 (회원, 주문, 상품 등등)스프링 컨테이너는 자바 객체의 생명
Spring framework에서는 Dependency Injection으로 3가지 방식을 지원하고 있다.생성자 주입수정자(Setter) 주입Field 주입본 포스트에서는 각 방식별 장단점에 대해서 서술한다.
스프링의 ComponentScan은 @Component가 붙은 클래스들을 자동으로 빈으로 생성해준다.컴포넌트 스캔을 사용하면 @Configuration이 붙은 클래스도 자동으로 빈으로 생성해주므로 주의하여야 한다.@Configuration을 통해 수동으로 빈을 등록해줄
싱글톤 방식은 여러 클라이언트가 하나의 객체 인스턴스를 공유하기 때문에 객체를 Stateful하게 설계하면 안된다.Stateful하게 설계한다는 것은 여러 쓰레드에서 접근 가능한 클레스 공유 변수를 통해 데이터가 처리되는 것이다.Stateful하게 설계할 경우, 아래와
스프링에선 @Bean 어노테이션을 붙일 경우, 해당 클래스를 스프링 빈으로 등록해주지만 CGLIB를 통하지 않고 순수 빈 객체로 생성해주기에, 싱글톤을 보장해주지는 않는다. 또한, 인스턴스의 컨텍스트가 @Bean 코드를 거치지 않는다면 해당 Bean은 생성되지 않는다.
@Autowired는 기본적으로 타입 매칭을 시도한다. 위의 코드는 @Autowired 내부 로직 중 아래 로직이 수행된다. 위 코드에서 DiscountPolicy는 인터페이스로 여러 구현체를 가지고 있고, 각 구현체들은 @Component 등의 어노테이션을 통해
스프링 빈은 객체 생성 및 DI 주입이 끝난 후 부터 사용할 수 있다.싱글톤 빈의 경우, 아래와 같은 Lifecycle을 가진다.스프링 컨테이너 생성스프링 빈 생성의존 관계 주입초기화 콜백사용소멸 전 콜백스프링 종료개발자가 빈을 사용할 수 있는 것은 '5'번에서 뿐이다
웹 스코프는 아래와 같은 종류가 있다. request: HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프, 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고, 관리된다. session: HTTP Session과 동일한 생명주기를 가지는 스코프 appli
Spring의 AOP는 부가 기능을 핵심 기능으로부터 분리하고 접근을 제어하기 위해 등장한 기술이다.Proxy 객체를 통해 객체를 사용하게 되면 아래와 같은 장점이 있다.본래 객체의 메소드가 호출되기 이전에 부가 기능들을 적용할 수 있다.객체를 최소한으로 생성하고 필요