@EnableWebMvc 애노테이션 기반 스프링 MVC를 사용할 때 편리한 웹 MVC 기본 설정 @Configuration @ComponentScan @EnableWebMvc public class WebConfig { } DispatcherServlet의 기본적인 전략과 @EnableWebMvc 사용 시 handlerMapping, handlerAdapter, viewResolver를 확인 DispatcherServlet 기본적인 전략 handlerMappings BeanNameUrlHandlerMapping(url 기반으로 매핑 처리) order = 매우 낮은 우선 순위 RequestMappingHandlerMapping interceptors : size = 0; order = 매우 낮은 우선 순위..
스프링 MVC구성 요소 직접 빈으로 등록하기 스프링 기본 전략 스프링은 기본적인 설정이 없어도 스프링이 제공해주는 DispatcherServlet.propeties를 통해 기본 전략을 사용하고 있다. org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver org.springframework.web.servlet.HandlerMapping=org.springframework.web.s..
DI 의존관계의 설정정보는 Java 코드를 활용하는 것 뿐만 아니라 다른 방법을 사용할 수 있다. 그 중 대표적인 것은 XML방식이다. Java 코드로 DI 의존관계의 설정정보를 이용하게 되면, DI 구성이 바뀔때마다 자바 코드를 수정하고 클래스를 다시 컴파일해야 하는 단점이 발생한다. XML은 단순한 텍스트 파일이기 때문에, 컴파일과 같은 작업이 없고 다루기가 쉽다. XML 설정 Java와 XML의 설정 차이 @Confguration : @Bean : @Bean 메소드를 통해 얻을 수 있는 Bean DI 정보를 세가지로 정의할 수 있다. 빈의 이름 @Bean 메소드 이름이 빈의 이름 이며, 이 이름은 getBean()에서 사용된다. 빈의 클래스 빈 오브젝트를 어떤 클래스를 이용해서 만들지를 정의한다. ..
제어의 역전(IoC)과 의존관계 주입 스프링의 IoC만 볼 때, 서블릿 컨테이너 처럼 서버에서 동작하는 서비스 컨테이너인지 혹은 단순히 IoC 개념이 적용된 템플릿 메소드 패턴을 이용한 프레임워크인지 한 눈에 파악하기 힘들다. 그로 인해, 스프링이 제공하는 IoC 방식에 핵심을 짚어주는 의존관계 주입 이라는 좀 더 명확한 이름을 사용했다. 스프링 IoC 기능의 대표적인 동작원리는 주로 의존관계 주입이라고 불린다. -> 이런 이유로 IoC 컨테이너를 DI 컨테이너라고 불리기도 한다. 의존관계 주입, 의존성 주입, 의존 오브젝트 주입 DI는 오브젝트 레퍼런스를 외부로부터 제공받고 이를 통해 제공 받은 오브젝트와 다이나믹하게 의존관계가 만들어진다. 이 의미를 함축시켜 만든 키워드 들이 의존관계 주입, 의존성 ..
스프링 부트를 활용한 MVC 동작 SpringBoot Main @SpringBootApplication public class DemoSpringMvcApplication { public static void main(String [] args) { SpringApplication.run(DemoSpringMvcApplication.class); } } Controller @Controller public class EventController { @Autowired EventService eventService; @GetMapping("/events") public String events(Model model) { model.addAttribute("events", eventService.getEve..
싱글톤 레지스트리와 오브젝트 스코프 DaoFactory를 직접 사용하는 것과 @Configuration을 추가해서 스프링의 애플리케이션 컨텍스트를 통해 사용하는 것은 동일한 것 같이 보인다. 그저 애플리케이션 컨텍스트에 userDao라는 이름의 빈을 요청하면 DaoFactory의 userDao() 메소드를 호출해서 그 결과를 돌려주는 것이라고 볼 수 있다. 하지만, 스프링의 애플리케이션 컨텍스트는 기존에 직접 만들었던 오브젝트 팩토리와 중요한 차이점이 있다. 오브젝트의 동일성과 동등성 동일성 두개의 오브젝트가 완전히 같은 동일한 오브젝트라고 말하는 것 동일성의 비교는 == 연산자를 사용 동등성 동일한 정보를 담고 있는 오브젝트라고 말하는 것 동등성의 비교는 오브젝트의 equals() 메소드를 사용 두 개..
DispatcherServlet의 ViewResolver DispatcherServlet 동작과정에서 viewResolver의 과정을 살펴보자 //DispatcherServlet.class protected void initStrategies(ApplicationContext context) { ... //0. init은 최초의 서블릿을 initializer할 때만 접근한다. this.initViewResolvers(context); ... } private void initViewResolvers(ApplicationContext context) { this.viewResolvers = null; if (this.detectAllViewResolvers) { //1. viewResolver 타입을 모두..
View가 포함된 DispatcherServlet 동작원리 //Controller @Controller public class HelloController { @GetMapping("/sample") public String sample() { return "/WEB-INF/sample.jsp"; } } 먼저 Localhost:8080/app/sample로 접속 HandlerMapping RequestMappingHandlerMapping BeanNameUrlHandlerMapping HandlerAdapter RequestMappingHandlerAdapter SimpleControllerHandlerAdapter ReturnValueHandlers ModelAndView가 Null일 경우(메소드에 @..
- Total
- Today
- Yesterday
- package-private
- mustache
- ifPresent
- 정적팩터리메서드
- 이펙티브 자바
- 빈 순환 참조
- Effective Java
- java
- junit
- try catch finally
- 연관관계
- flatMap
- 스프링부트
- JPA
- effectivejava
- 김영한
- 복사 팩토리
- 생성자
- 팩토리 메소드 패턴
- jdk버전
- 이펙티브자바
- 빌더 패턴
- try with resources
- 점층적 생성 패턴
- 자바8
- 인프런
- java8
- @Lazy
- springboot
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |