2024/06 6

[객체지향] 의존성 주입(DI) 및 의존성 역전(DIP)

Dependecy Injection - 디자인 패턴Dependecy Inversion Principle - 객체지향 원칙   수다수다처음 자바를 공부할 때, 의존성 주입과 제어의 역전 등등 여러 개념을 공부했지만 사실 이해가 제대로 안 되었다.이론으로 공부를 하니까.. 머리에서는 도대체 무슨 말인데 라는 생각 밖에 없었다...^^;;; 시간이 흘러 개발 경험 1년을 넘어 2년차를 바라보면서 우연히 의존성 주입 내용을 읽었는데무슨 이야기인지.. 이해가 되었다.그랬구나,, 그래서 그랬구나.. 완벽하게 이해한 것은 아니지만 내가 이해한 것을 최대한 남겨보려고 한다.  의존하다.먼저 의존성 주입을 하기 전에, 의존한다는 것이 무엇인지 알아야 한다. 의존한다를 아래 코드와 같이 보여줄 수 있다.// SpiderM..

[KOSTA] Java 기반의 객체지향 프로그래밍 1주차

Write Once, Run Anywhere(작성은 한 번만, 동작은 어디든) 수업수업제목: JAVA 기반의 객체지향 프로그래밍수업기간: 06/22(토), 06/29(토)수업 시간: 09:00 ~ 18:00 객체와 클래스객체 지향 프로그래밍(Object-Oriented Programming)→ 반복적으로 하는 작업을 줄이기 위해서 나온 방법이다.→ OOP is A P.I.E추상화(Abstraction): 현실의 객체를 추상화 해서 클래스를 구성다형성(Polymorphism): 하나의 객체를 여러 가지 타입으로 참조상속(Inheritance): 부모의 클래스의  자산을 물려받은 자식을 정의하여 코드 재사용이 가능은닉화(Encapsulation): 데이터를 외부에 직접 노출하지 않고 메서드를 이용해 보호현실..

[강의] 스프링 MVC 2편 - 예외 처리와 오류 페이지(섹션8)

1. 서블릿 예외 처리두 가지 방식으로 예외 처리를 지원한다.Exceptionresponse.sendError(HTTP  상태 코드, 오류 메세지) 1) Exception(예외)자바 직접 실행자바의 메인 메서드를 직접 실행하는 main 이라는 쓰레드가 실행된다.실행 도중에 예외를 잡지 못하고 처음 실행한 main 메서드로 넘어가면 예외를 던지고, 쓰레드는 종료된다. 웹 애플리케이션웹 애플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행된다.예외가 발생했을 때, try ~ catch로 처리하면 아무런 문제가 없다.만약, 예외를 잡지 못하고 서블릿 밖으로 전달되면 어떻게 될까?WAS(여기까지 전파) ← 필터 ← 서블릿 ← 인터셉터 ← 컨트롤러(예외발생)  @Slf4jpubli..

[강의] 스프링 MVC 2편 - 필터, 인터셉터(섹션7)

1. 서블릿 필터공통 관심 사항요구사항을 보면 로그인 한 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다.문제는 로그인 하지 않은 사용자도 다음 URL을 직접 호출하면 상품 관리 화면에 들어올 수 있다. 공통 관심사는 AOP로 해결할 수 있지만, 웹과 관련된 공통 관심사는 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 1) 서블릿 필터 소개필터는 서블릿이 지원하는 수문장이다. 필터 흐름HTTP 요청 → WAS → 필터 → 서블릿 → 컨트롤러 필터 제한HTTP 요청 → WAS → 필터 → 서블릿 → 컨트롤러  // 로그인 사용자HTTP 요청 →  WAS →  필터(적절하지 않은 요청이라 판단, 서블릿 호출 X) // 비 로그인 사용자 필터 인터페이스init(): 필터 초기화 메소드, 서블릿 ..

[스프링 MVC 1편] 웹 페이지 만들기

현재 문제점 정확한 에러의 이유는 모르겠지만, 타임리프의 templates/basic 경로를 handler에서 못 잡고 있다.로깅 메세지가 info이면 에러가 안 보여서 시간을 많이 낭비했다...(보여야 되는거 아닌가..ㅠㅠ)이 부분을 해결해야 강의를 계속 들을 수 있을 것 같다....요구사항 분석상품을 관리할 수 있는 서비스 만들기 상품 도메인 모델상품 ID상품명가격수량상품 관리 기능상품 목록상품 상세상품 등록상품 수정상품 도메인 개발  상품 객체package hello.itemservice.domain.item;import lombok.Getter;import lombok.Setter;@Getter @Setterpublic class Item { private Long id; private..