본문 바로가기

스프링 부트

(30)
📋 4. 의존 자동 주입 2021-05-29글 @Autowired 어노테이션을 통한 의존 자동 주입 자동 주입 기능을 사용하면 스프링이 알아서 의존 객체를 찾아 주입한다. 사용 방법은 의존을 주입할 대상에 @Autowiwred 어노테이션을 붙이면 된다. 해당 어노테이션이 붙어있으면 스프링이 이를 찾아 필드에 할당한다. *@Autowired를 적용한 대상에 일치하는 빈이 없으면? * 해당 필드에 대한 의존을 충족하지 않는다는 내용과 함께 빈이 존재하지 않는다는 에러 메시지가 출력된다. *만약 두개 이상이면? * 해당 타입의 빈이 한개가 아닌 여러개를 발견했다는 예외 메시지가 출력된다. @Qualifier를 이용한 의존 객체 선택 자동 주입 가능한 빈이 두 개 이상인 경우 자동 주입을 할 빈을 지정하는 방법 사용 위치 @Bean 을..
📋 3. 스프링 DI 2021-05-28글 스프링은 객체 컨테이너 BeanFactory 객체 생성과 검색에 대한 기능 정의 getBean() : 생성된 객체를 검색하는데 필요한 메서드 객체 검색 이외에도 싱글톤인지 프로토타입 빈인지 확인하는 기능도 있음 AnnotationContext 메시지, profile, 환경 변수 등을 처리할 수 있는 기능을 추가로 쩡의 의존이란? DI를 통한 의존 처리 의존이란? 한 클래스가 다른 클래스의 메서드를 실행할 때 의존한다고 표현 변경에 의해 영향을 받는 관계를 의미 DI는 의존하는 객체를 직접 생성하지 않고, 의존 객체를 주입받는 방식을 사용 DI를 통해 객체를 주입하면 유지보수성이 더 올라간다. 스프링의 DI 설정 스프링은 DI를 이용해서 객체를 서로 연결해주는 조립기이다. 특정 타입의..
SpringBoot Auto Configuration 2021-05-27글 테코톡을 보고 추가로 학습한 내용들 스프링 부트는 component-scan을 통해 component를 찾고 bean을 생성한다. 이 과정에서 우리가 설정한 bean들이 생성된다. 그리고 이 과정에서 spring boot의 auto configuration에 의해 추가적인 bean들도 함께 생성된다. Spring Boot AutoConfiguration이란? 클래스 패스에 존재하는 dependecy를 기반으로 spring 애플리케이션을 자동으로 구성하는 방법 스프링 부트는 web, h2, jdbc등 여러 자동 설정을 제공 (starter) 특정 Bean을 정의할 필요 없기 때문에 개발이 더 빠르고 쉬워짐 스프링부트에선 @SpringBootApplication에 있는 EnableAut..
📋 Spring MVC - 5. 스프링 MVC 2021-05-03글 스프링 MVC 전체 구조 지금껏 만들었던 프레임 워크 스프링 MVC FrontController - DispatcherServlet HandlerMappingMap - HandlerMapping MyHandlerAdapter - HandlerAdapter ModelView - ModelAndView ViewResolver - ViewResolver MyView - View DispatcherServlet DispacherServlet 도 부모 클래스에서 HttpServlet 을 상속 받아서 사용하고, 서블릿으로 동작한다. 스프링 부트는 DispatcherServlet를 자동으로 등록하면서 모든 경로에 대해서 매핑한다. 요청의 흐름 DispatcherServlet이 호출되면 servi..
📋 Spring MVC - 4. MVC 프레임워크 만들기 2021-05-04글 MVC 프레임워크 만들기 프론트 컨트롤러 패턴 프론트 컨트롤러도 서블릿이다. 요청을 모두 받고 요청에 맞는 컨트롤러를 호출한다. 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받고, 요청에 맞는 컨트롤러를 찾아서 호출한다. 입구를 하나로 묶는다. 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 스프링 웹 MVC와 프론트 컨트롤러 스프링 웹 MVC의 핵심도 바로 FrontController이다. (DispatcherServlet이 프론트 컨트롤러 패턴으로 되어있다.) ControllerV1을 인터페이스로 만들고 이를 구현한 Controller들을 만든다. public class MemberFormControllerV1 implements Contro..
📋 Spring MVC - 3. 서블릿, JSP, MVC 패턴 2021-05-03글 서블릿, JSP, MVC 패턴 서블릿으로 만들어보고, JSP로 만들어보고 마지막으로 MVC로 만들어 볼 것이다! 서블릿으로 만들었을 때 일부 예제 @WebServlet(name = "memberListServlet", urlPatterns = "/servlet/members") public class MemberListServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletExce..
📋 Spring MVC - 2. 서블릿 2021-05-03글 예제 스프링을 사용하지는 않지만 스프링 부트 프로젝트를 만든다. 서블릿은 톰캣 같은 WAS를 직접 설치하고, 그 위에 서블릿 코드를 클래스 파일로 빌드해서 올린 다음 톰캣 서버를 실행해야 했는데, 스프링 부트는 톰캣 서버를 내장하고 있으니, 이로 진행한다. 보통은 Jar를 선택하지만, JSP를 돌리기 위해 War를 선택한다. HelloServlet // 서블릿이 호출되면 이 service가 호출된다. @WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest r..
@Valid와 @Validated 2021-04-30글 @Valid와 @Validated 서비스 근로에서 장바구니 미션 API를 만들며 요청으로 들어온 DTO의 값을 검증하는 방법을 고민하다가, Spring Validation을 사용해보게 되었다. 이번에는 DTO의 필드에 제약을 걸어주고 컨트롤러에서 검증을 해주었는데, 새롭게 배운 내용이니 이를 정리해보려 한다. 사실 올바르게 사용한 것인지는 확신일 없으나, 이런 것도 있구나 다뤄보면서 여러 시행착오를 겪었기에 좀 더 공부하면서 정리해야지 😋 Dependency 추가 - gradle implementation 'org.springframework.boot:spring-boot-starter-validation' @Valid 이번에 우리가 사용한 예시를 보며 하나씩 정리하자..