본문 바로가기

Controller 작성시 예외 상황 Controller를 작성할 때 예외 상황을 고려하면 처리해야 하는 작업이 엄청나게 늘어날 수 밖에 없다. 154p 스프링 MVC에서는 이러한 작업을 다음과 같은 방식으로 처리할 수 있다. 1) @ControllerAdvice와 @ExceptionHandler를 이용한 처리 @ControllerAdvice를 선언하면 웹어플리케이션의 특정 익셉션들을 공통적으로 핸들링 할 수 있다. @ControllerAdvice는 뒤에서 배우게 되는 AOP(Aspect-Oriented-Prograinming)를 이 용하는 방식이다. AOP에 대해서는 별도의 파트에서 설명하겠지만, 간단히 언급하자면 핵심적인 로직은 아니지만 프로그램에서 필요한 '공통적인 관심사(cross-concern)는 분 리’하자는 개념이다. Contr..
스프링 mvc의 controller 스프링 mvc의 controller 스프링 MVC를 이용하는 경우 작성되는 Controller는 다음과 같은 특징이 있다. • HttpServletRequest, HttpServletResponse를 거의 사용할 필요 없이 필요한 기능 구현• 다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용 가능• GET 방식, POST 방식 등 전송 방식에 대한 처리를 어노테이션으로 처리 가능• 상속/인터페이스 방식 대신에 어노테이션만으로도 필요한 설정 가능다른 프레임워크들과 달리 스프링 MVC는 어노테이션을 중심으로 구성되기 때문에 예제들을 작성할 때에도 각 어노테이션의 의미에 대해서 주의해가며 학습해야 한다.
컨트롤러의 리턴타입 Controller의 리턴 타입 스프링 MVC의 구조가 기존의 상속과 인터페이스에서 어노테이션을 사용하는 방식으로변한 이후에 가장 큰 변화 중 하나는 리턴 타입이 자유로워 졌다는 점입니다.Controller의 메서드가 사용할 수 있는 리턴 타입은 주로 다음과 같습니다. • String: jsp를 이용하는 경우에는 jsp 파일의 경로와 파일이름을 나타내기 위해서 사용합니다.• void: 호출하는 URL과 동일한 이름의 jsp를 의미합니다.• VO, DTO 타입 : 주로 JSON 타입의 데이터를 만들어서 반환하는 용도로 사용합니다.• ResponseEntity 타입 : response 할 때 Http 헤더 정보와 내용을 가공하는 용도로 사용합니다.• Model, ModelAndView: Model로 데이터를..
Autowired 와 Resource 와 lnject 어노테이션정리 책 110쪽 관련 @Autowlred 애노테이션과 차이가 있다면,@Autowired 애노테이션은 타입을 기준으로 빈 객체를 선택하는 반면에 ©Resource 애노테이션은 이름을 기준으로 빈 객체를 선택한다는 점이다 @qualifer lnject , @named @component @Component 애노테이션은 용도 별로 의미를 부여하는 하위 타입을 갖고 있는데,다음은 그종류들이다. • o.s.stereotype.Component : 스프링 빈 임을 의미한다.• o.s.stereotype.Service : DDD(도메인 주도 설계)에서의 서비스를 의미한다.• o. s. stereotype. Repository : DDD(도메인 주도 설계)에서의 리파지터리를 의미한다.• o.s.stereotype.Cont..
스프링 컨테이너 계층 구조 스프링 컨테이너는 부모-자식 관계의 계층 구조를 가질 수 있다. 자식에 속하는 컨테이너의 빈은 부모 컨테이너에 속한 빈을 참조할 수 있다. 즉, 의존 객체로 사용할 수 있다. 반대로 부모 컨테이너에 속한 빈은 자식 컨테이너에 속한 빈을 참조할 수는 없다. 부모/자식 구조를 만들고 싶다면, 자식 컨테이너를 생성할 때 setParent() 메서드를 이 용해서 부모 컨테이너를 지정해주면 된다. 아래 코드는 부모/자식 관계를 설정하는 예를 보여주고 있다. 123456789GenericXmlApplicationContext parent = new GenericXmlApplicationContext("classpath:conf-parent.xml"); GenericXmlApplicationContext child ..
스프링 mvc의 기본 구조 0. 스프링 MVC란? 스프링 MVC는 웹 스프링 라이브러리로, 기존에 Servlet/JSP를 이용하는 개발에 비해서 간단하고, 빠른 개발이 가능한 웹 프레임워크이다. 스프링 프레임워크를 이용한다는 의미는 스프링 MVC 프 로젝트인경우가 대부분이다. 1. 스프링MVC의 기본 구조 스프링 MVC는 Spring Framework의 서브 프로젝트다. 스프링은 하나의 기능을 위해서만 만들어진 프레임워크가 아니라 ’코어'라고 할 수 있는 프레임워크에 여러 서브 프로젝트를 결합해서 다양한 상황에 대처할 수 있도록 개발되었 다. 서브 프로젝트라 별도의 설정이 존재할 수 있다. Spring Legacy Project로 생성한 예제 의 경우에도 servlet-context.xml과 root-context.xml로 설정 ..
부품화,은닉화,캡슐화,인터페이스 1. 부품화 1) 부품화란? 연관되어있는것을 묶고 연관안된것을 분리하는 방향성이 부품화라고 할 수 있다. 객체를 만든다는것은 그 로직을 재활용가능하도록 부품화 하는것이라고 볼 수 있다. 객체 지향은 부품화의 정점이라고 할 수 있다. 객체 지향과 부품화를 동일시 할 수는 없지만 부품화라고 하는 소프트웨어의 큰 흐름은 객체 지향이 만들어지는데 지대한 공헌을 했다고 할 수 있다. 2) 부품화의 예시 하드웨어에서 이루어지는 부품화의 예를 보자. 본체와 모니터와 키보드가 하나로 단일화되어 있다고하자. 이것의 문제점은 분명하다. 모니터 가 고장 나면 컴퓨터를 바꿔야 한다. 키보드가 고장 나도 컴퓨터를 교체해야 한다. 그래서 모니터와 본체와 키보드를 분리했다. 다시 말해서 부품화 시킨 것이다. 기능들을 부품화 시킨 ..
추상화-abstract 추상화: abstract 복잡한 현실에서 관심사, 필요한 관점만 추출해서 간단하게 단순화 시킨것을 추상화라 한다. 즉, 해결해야할문제, 반영해야할 복잡한 현실을 소프트웨어적으로 단순화시켜서 만드는 행위를 추상화라고한다. 예를들어, 지하철 노선도가 디자인의 추상화라고 한다면 프로그램을 만든다는 것은 소프트웨어 의 추상화라고 할 수 있다 객체 지향 프로그래밍은 좀 더 현실을 잘 반영하기 위한 노력의 산물이다. 이것은 단순히 객체 지 향의 문법을 이용해서 객체를 만든다고 달성되는 것이 아니다. 고도의 추상화 능력이 필요하다. 좋은 설계는 문법을 배우는 것보다 훨씬 어려운 일이다.