목록Spring (34)
The Debugging Chronicles : "코드의 미학"
응답이 2가지로 온다 get view를 한다.줄일 수 있다. package com.koreait.app.view.controller;import java.io.IOException;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;@WebServlet("*.do")public class DispatcherServlet extends HttpServlet { ..
DispatcherServlet은 의존성을 2개 가지고 있는데handlerMapping과 ViewResolver이다POJO이다어디로 갈지를 관여한다. 멤버변수는prefix와 suffix가 있는데setter로 의존성을 주입한다. 어디로 가야할지 관연하는 부분에서어디로 가야할 부분에 접두사(./)랑 접미어(.jsp)를 붙여서 완성시킨다. package com.koreait.app.view.controller;public class ViewResolver { private String prefix; private String suffix; public String getPrefix() { return prefix; } public void setPrefix(String prefix) { this.pre..
FrontController일반적으로 view라고하는데 사용자에게 제공한다는 의미이다. 기본 내용에서 주석을 지우면 예전에는 FrontController라고 불렀는데 스프링에서는 DispatcherServlet 라고 불른다.일반 POJO가 new하지 않는다.서블릿에서는 컨테이너가 주관하는데 바로 톰캣이다.톰캣이 주관하는 web.xml 에 가보면xml 태그에 과도한 설정이을 피하기 위해서 어노테이션을 쓴다. 우리는 요청이 get인지 post인지 알지 못하기 때문에 DoAction을 만들어서 요청을 처리한다. doAction에서 들어오면 해야할 3가지 단계가 있다.1. 사용자(클라이언트, 브라우저)가 무슨 요청을 했는지 추출 및 확인2. 요청 수행 = 요청에 해당하는 controller 기능을 수행3. 응답..
선택을 하더도 MySQL은 깡통이어서 pom.xml에 따로 주입해줘야한다. MemebrDTO 란 자료형 타입이다. String 매번 선언하고 Boolean 도 매번 선언하고 쓸 때마다 new 해서 사용해야한다.DTO 도 마찬가지이다. 어노테이션 컨트롤를 사용하는 인터페이스를 사용해서 메서드 오버라이딩해서 강제하였다. Repository를 먼저 하고서 그 다음에 Autowired 해준다.
회사.어떤 팀인지 혹은 어떤 서비스인지.app.biz(business method=핵심관심,핵심로직).member(table 이름) biz == 서비스 == 제공하는 기능 MySQL 이관 작업 완료된 MySQL.jar 가 필요.dependency 주입 memberDAO는 5개의 메서드를 갖는다. 사용자가 xxx.do를 요청하면FC에서 XxxxAction객체 생성 후AF= xxxAction.excute();DS이 AF를 보고 페이지를 이동 근데 FC에서 XxxxAction객체 생성 하는 것을 "서비스"라고 한다. 멤버 서비스는 인터페이스이다.서비스(컨트롤러)에서는 DAO를 가져다가 서비스 내용(로직)을 구현한다.Action >>> ServiceService 의 내용은 실질적으로 DAO가 수행하는 것이..
@component("apple") == Iphone apple = new Iphone(); == 1. 대신에 @Component로 객체 new2. DI(의존주입) 기존에는 생성자, Setter ==>>> @Autowired 로 주입3. @Autowired 메모리의 자료형만 참고 ==>>> DI 모호성 에러 갤럭시 폰 생성 DI해서 폰 생성해줘~ 라는 요청을 받는 다면 1. 대신에 @Component로 객체 new 2. DI(의존주입) 기존에는 생성자, Setter ==>>> @Autowired 로 주입 3. @Autowired 메모리의 자료형만 참고 ==>>> DI 모호성 에러
1. 컨테이너란? 개발자 대신 new(객체)를 생성 관리 해주는 것을 발한다.2. 스프링 프레임워크를 한마디로 요약해보면? IoC 와 AOP를 지원하는 경량의 프레임워크다.3. IoC 란? 제어의 역행 : 제어권자인 개발자가 new 하지 않고 사용4. 중간 프로젝트 컨테이너가 1개 == 톰캣(서블릿 컨테이너) 서블릿 파일의 객체만 new 한다.5. .xml(설정파일) 1:1 실습때 factory(컨테이너) => applicationContext.xml 서블릿 컨테이너(톰캣) => web.xml 스프링 => pom.xml6. new == 7. .xml 과도한 설정 -> @어노테이션 설정을 개발 .xml 보단 @ 어노테이션을 사용하는 것이 좋다. 최종 복습 pom.xml Spring w..
의존성 주입하는데는 두가지 방법이 있다. 1. 생성자 주입 - handler mapper2. Setter 주입- DTO2. setter 주입 멤버 변수 두개를 가지고 getter setter는 맨 마지막에 두는 것이 보편적이다. applicationContext.xml로 넘어가서생성자 주입은 무엇을 넣겠다면 설정하면 되지만Setter 주입은 이름까지 넣어 주어야 한다.로그를 보면아이폰 객체 생성 01이 먼저 나온다.이 이야기는 기본 생성자를 호출했다는 뜻이다. setter 호출은기본 생성자 먼저 호출하고의존 주입 대상 setter 호출한다.생성자 주입은 의존 주입 대상 생성자 먼저 호출되고 생성자가 호출된다. 그럼 이 둘의 차이는 뭘까? 생성자 주입은의존 주입을 해야하는 것이 하나라도 없으면 만들어 지지..
객체생성(new)을 컨테이너로 대신한다 === IoC의 핵심 === Spring 사용하는 이유"의존성(dependency)"이란?: 어떤 코드를 수행할 때에 필요한 다른 부분의 코드 내용이 있는가? "주입(injection)"이란?: 필요한 다른 부분의 코드 내용을 추가하는 것 "의존성 주입" == DIWatch를 통해서 IPhone 전원을 켜보자. 근데 위에 코드는 메서드가 실행될 때 마다 new가 된다.즉, 아이폰은 워치에 대해 의존성을 갖는다. 그래서 다음과 같이 코드를 바꿀 수 있다.해당 객체를 멤버변수로 두면 관리가 용이하다.지금은 객체가 없는 상황이다.메모리를 주어야한다.그래서 watch에 의존성 주입을 해야한다. 그럼 의존성 주입하는 방법을 알아보자.의존성 주입하는데는 두가지 방법이 있다. ..
스프링 컨테이너는 객체를 즉시 로딩한다.(pre-loading) 근데 실제로 사용하면 로딩하도록 (lazy-loading)지연 로딩으로 설정을 변경해보자! 사용자는 서비스 접속할 때 지연되는 것은 기다린다 하지만 서비스 사용중에 지연되는 것은 대부분 기다리지 못한다. 멤버 변수의 초기화는 생성자가 한다. 근데멘버 변수인데, 생성자에서 초기화하지 않는 특이한 경우가 있다.init() 함수에서 초기화하는 경우이다. 스프링에서 함께 호출하기 위해 init-method를 추가해준다 로그를 보면 이를 자바 코드로 바꾸게 되면 어떤 객체가 메모리에 단 1개 존재한다."싱글톤" 패턴이 유지된다. 스프링 프레임 워크는 (스프링 컨테이너)싱글톤 패턴을 유지시킨다. 디폴트 값이 싱글톤이다그래서 프로토타입으로 바꾸면..