본문 바로가기

Computer Science

(251)
[2권] 토비의 스프링 6일차 컨트롤러가 뷰오브젝트를 리턴할수 있지만, 보통은 뷰의 논리적인 이름을 리턴해주며 DispatcherServlet의 전략인 뷰리졸버가 이를 이요해 뷰 오브젝트를 생성해준다 -> 대표적으로 사용되는뷰는 JSP/JSTL 뷰다. JSP파일로 만들어진 뷰템플릿과 JstlView클래스로 만들어진 뷰 오브젝트가 결합해서 최종적으로 사용자가 보게 될 HTML을 생성하는데, 이 경우 컨트롤러는 JstlView가 사용할 JSP 템플릿 파일의 이름을 리턴해줘야 한다. 컨트롤러가 리턴해주는 정보는 결국 모델과 뷰 두 가지이다. 스프링에는 ModelAndVIew라는 이름의 오브젝트가 있는데, 이 ModelAndView가 DispatcherServlet이 최종적으로 Controller에게 돌려받는 오브젝트이다. Dispatche..
[2권] 토비의 스프링 5일차 DispatcherServlet -> HandlerAdpater에 웹 요청 전달 ( HttpServletRequest 타입의 오브젝트를 같이 전달 ) -> HandlerResolver가 resolve() Method를 통해서 파라미터 전달 -> Proxy객체의 .invoke() 호출. 컨트롤러의 작업 1. 사용자 요청을 해석하는 것 2. 그에 따라 실제 비즈니스 로직을 수행하도록 서비스 계층 오브젝트에게 작업을 위임하는 것 3. 그리고 결과를 받아서 모델을 생성하는 것 4. 마지막으로 어떤 뷰를 사용할지 결정하는 것 컨트롤러가 어떤식이든지 DispatcherServlet에게 돌려줘야 하는 두가지 정보가 존재하는데, 그 중 하나가 모델이고 나머지 하나가 뷰이다.
Object Mapper 구현하기 ObjectMapper란? JSON 형식을 사용할 때, 응답들을 직렬화하고 요청들을 역직렬화 할 때 사용하는 기술이다. (*여기서 다소 생소한 JSON 형식, 직렬화, 역직렬화를 잠깐 살펴본다.) JSON(Javascript Object Notation) "키 :값" 쌍으로 이루어진 데이터 객체를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 포맷이다. 본래는 자바스크립트 언어로부터 파생되어 자바스크립트 구문 형식을 따르지만 플랫폼과 언어 독립형 데이터 형식이다. 따라서 프로그래밍언어나 플랫폼에 독립적이므로 C, 자바, 파이썬 등에서 JSON 데이터 생성을 위한 코드를 각자 가지고 있다. JS를 제외한 언어는 라이브러리를 사용해야하는 경우가 많다 직렬화 (Serialize) 데이터를 전송하거나 저..
Spring> Spring REST> JSON Data Binding Intro JSON data 를 Java POJO 로 변환하는 과정을 Data binding이라고 한다 Jackson Project를 이용하여 data binding을 다룬다. Jackson은 Maven project로 가져온다. 파일로부터 데이터를 읽고 클래스의 인스턴스를 생성한다. JSON 데이터를 클래스에 넣고 사용한다. 클래스를 JSON으로 바꾼다. 이걸 Jackson이 처리한다. Spring이 자동적으로 Jackson Intergration을 다룬다. REST controller를 통해서 JSON에서 POJO로 바꾸고 객체에서 JSON으로도 바뀐다.
[토비의 스프링 2권] 4일차 컨테이너 인프라빈 스프링은 BeanPostProcessor나 BeanFactoryPostProcessor 같은 확장 포인트를 제공한다. 이런 인터페이스를 구현한 크래스가 빈으로 되어 있다면 스프링 컨테이너는 스스로를 확장하는 데 이를 이용한다. 컨테이너의 기능을 확장해주는 6개의 빈(3.1버전) - ConfigurationClassPostProessors - AutowiredAnnotationBeanPostProcessor - AutowiredAnnotationBeanPostProcessor - RequiredAnnotationBeanPostProcessor - PersistenceAnnotationBeanPostProcessor 2.1 DAO 패턴 DTO 또는 도메인 오브젝트만을 사용하는 인터페이스를 ..
[Refacotoring] - 마틴 파울러 1. 함수 추출하기 - 함수 인라인하기 2. 변수 추출하기 - 변수 인라인하기 3. 변수 캡슐화하기 4. 변수 이름 바꾸기 5. 상수 이름 바꾸기 6. 매개변수 객체 만들기 7. 여러 함수를 클래스로 묶기 8. 단계 쪼개기 -> 명확한 경계설정, 분리 캡슐화 7.1 레코드 캡술화하기 : 가변데이터를 저장하는 용도 -> 객체 선호(어떻게 저장했는지 숨긴채 세 가지 값을 각각의 메소드로 제공) 7.2 컬렉션 캡슐화하기 7.3 기본형을 객체로 바꾸기 7.4 임시 변수를 질의 함수로 바꾸기 7.5 위임 숨기기 (1) 위임 객체의 각 메서드에 해당 하는 위임 메서드를 서버에 생성한다. (2) 클라이언트가 위임 객체 대신 서버를 호출하도록 수정한다. 하나씩 바꿀 때마다 테스트한다. (3) 모두 수정했다면, 서버로부..
[2권] 토비의 스프링 2권 3일차 ContextLoaderListener 초기화 대상 : ApplicationContext 사용 설정 파일 : applicationContext.xml -> 보통 WEB-INF/applicationContext.xml에 위치. 자동으로 생성해주는 Context class : XmlWebApplicationContext -> 대체 가능한 Context class : AnnotationConfigWebApplicationContext Front Controller Servlet : DispatcherServlet Servlet Name : spirng으로 한다면 네임스페이스는 spring-servlet으로 구성되고 디폴트 설정파일은 WEB-INF/spring-servlet.xml로 구성 기본적으로 서블릿의 초..
instanceof, Class.isAssignableFrom Instanceof instanceof는 해당 Object가, 특정 Class, Interface를 상속하거나 구현 했는지를, boolean type으로 return해주는 method이다. public class Gillog extends Gil { ... } Gillog obj = new Gillog(); // true if (obj instanceof Gil) { ... } Class.isAssignableFrom Class.isAssignableFrom은 특정 Class가, 특정 Class, Interface를 상속하거나 구현 했는지를, boolean type으로 return해주는 method이다. // true if (Gillog.class.isAssignableFrom(Gil.class)) { ..