본문 바로가기

항해99

(44)
Java SOLID! 객체지향 설계 5원칙 SOLID SRP (Single responsibility Principle) : 단일 책임 원칙 소프트웨어의 설계 부품(클래스 , 메서드 , 추상체) 등은 단 하나의 책임(역할) 만을 가져야한다. 하나의 책임이라는 것은 모호하며 , 책임의 크기가 클 수도 있고 작을 수도 있다. 중요한 책임의 기준은 변경이며 하나의 객체가 변경 될 때의 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것이다. ex) UI의 변경 , 객체의 생성과 사용을 분리 , MVC모델 OCP (Open Closed principle) : 개방-폐쇄 원칙 소프트웨어의 요소는 확장에는 열려있고 변경에는 닫혀있어야한다. 객체지향의 특징인 다형성을 활용하여 기능의 확장이나 요구사항의 변경이 일어났을 때 기존 코드의 변경..
Spring CORS - Origin - - [Protocol (http , https)] - [Hosthome (localhost , naver.com , google.com)] - [port (80 ,8080 , 8000)] Origin이란 Protoco , host , port를 합친 것을 말합니다. ex : http://localhost:8080 - SOP (Single Origin Policy) - 브라우저가 동일 출처 정책을 준수해 다른 origin의 리소스 접근을 막는 것을 말한다. - CrossOrigin Resource Sharing - 서로 다른 origin끼리 리소스 요청을 받을 수 있게해주는 기능을 정의해둔 표준 SOP (Single Origin Policy)를 우회하기 위한 표준 기술이다.
Spring SQL , ORM - StructuredQueryLanguage - 관계형 데이터베이스 관리 시스템 RDBMS의 데이터 처리 및 관리를 위해 설계된 프로그래밍 언어이다. RDBMS에서의 자료의 검색 , 관리 , 스키마 생성 및 수정 데이터베이스의 접근 관리를 위해 고안되었으며 MySQL , MarianaDB 등 RDBMS들이 표준 언어로 채택하고 있다. - Object Relational Mapping - 객체와 RDBMS의 데이터를 매핑시켜주는 기술이다. 객체지향 프로그래밍 언어 내에서 객체 = DB테이블 가능하게 해주는 역할을하며 RDBMS를 조작하기 위한 SQL을 작성하는 것이 아닌 코드로 DB를 조작이 가능하게 한다. RDBMS를 객체지향적으로 관리하기 때문에 개발자가 비즈니스 로직에 집중할 수 있게 해준다. 단 ..
Spring IOC(제어의 역전) , DI (의존성 주입) - Inversion Of Control- 프로그램의 흐름 (객체의 생성 , 생명주기)을 개발자가 직접 제어하는 것이 아닌 외부에서 제어 및 관리해주는 것을 말한다. - IOC Container - 스프링에서는 Application을 구성하는 Bean을 관리하기 위하여 IOC개념을 이용 Spring IOC Container가 객체를 관리함으로써 DI(의존성 주입) , AOP(관점 지향 프로그래밍)이 가능해지게 된다. Spring IOC Container가 주도권을 가져감으로써 Spring IOC Container가 객체의 관리, 의존관계의 결정 및 설정 등의 역할을 맡게된다. - DI (1)- 객체의 의존성을 개발자가 아닌 외부(IOC Container)에서 주입함으로써 객체간의 결합을 약하게 해주며 유..
Servlet & Dispatcher Servlet Servlet Java를 사용해 웹을 만들기 위한 기술 클라이언트의 요청을 받고 결과를 전송하는 자바 프로그램이다. 서블릿은 자바로 구현된 CGI라고 말한다. CommonGatewayInterface 공용 게이트웨이 인터페이스 웹 서버 상에서 사용자의 프로그램을 동작시키기 위한 조합 Servlet의 동작 사용자의 요청 (URL 입력) -> Http Request를 Servlet Container에 전송 ⬇️ Servlet Container는 사용자의 요청을 server로 전송할 HttpServletRequest server의 응답을 사용자에게 반환할 HttpServletResponse 두 객체를 생성한다. ⬇️ Servlet Container가 요청에 적합한 Servlet을 찾아 service() 메서드..
Rest API Put & Patch PUT PUT PATCH 원본 DATA {"name" : "plo", "age" : "25"} {"name" : "plo", "age" : "25"} {"name" : "plo", "age" : "25"} 동작 전 {"name" : "hyuk", "age" : "26"} {"name" : "hyuk"} {"name" : "hyuk"} 동작 후 {"name" : "hyuk", "age" : "26"} {"name" : "hyuk", "age" : null } {"name" : "hyuk", "age" : "25"} Put (UPDATE) 데이터 전체 수정 데이터 필드 내의 모든 필드를 전달해야한다. 일부만 전달할 경우에는 오류 발생 해당 데이터의 전체를 교체해야한다. Patch (UPDATE) 데이터의 일..
메모리구조 (+Java) - Code(Text) 영역 - Code 영역은 코드가 저장되는 영역이다. Code영역에 저장되는 코드들을 Cpu가 하나씩 가져가서 처리하게된다. - 데이터(data) 영역 - 프로그램의 전역(global) , 정적(static) 변수가 저장되는 영역이다. 프로그램의 시작과 동시에 할당 , 종료와 동시에 소멸된다. 프로그램의 시작부터 끝까지 메모리에 존재하는 영역이다. = java = -메서드 영역(method)- JVM이 실행되며 생기는 영역 class정보 , 전역변수 , 정적(static) 변수 -RumTimeConstantPool- 상수 정보가 저장되는 공간 - 힙(heap) 영역 - 사용자가 필요할 때 마다 직접 사용하고 관리하는 영역. 데이터의 크기가 확실하지 않고 변동이 있을 때 사용자가 직..
Spring Controller , Service , Repository , Domain , DTO = Spring Controller , Service , Repository , Domain , DTO = - Controller - Client의 요청을 받았을 때 그 요청에 대해 실제 업무를 수행하는 Service를 호출 클라이언트가 보낸 데이터가 있다면 Service를 호출할 때 전달하기 쉽게 데이터의 가공 모델의 업무 수행이 완료되면 그 결과를 바탕으로 화면을 구성하도록 View에 전달 Service : Controller의 요청을 받아 알맞은 정보를 가공 Controller에게 재전달한다. Repository를 상속받아 .findByID , .save()등의 함수 사용이 가능해진다. Repository : Entity에 의해 생성된 DB에 접근하는 메서드를 사용하기위한 interface이다. J..