반응형 분류 전체보기714 AOP AOP(aspect-oritented programming) 이란? AOP는 관심사 횡단 교차점의 분리로 모듈화를 향상시키는 패러다임이다. 코드 자체를 변경하지 않고도 기존의 코드에 부가적인 행동을 추가시킬 수 있는데, 대신에 "pointcut" 설정을 통해 수정되는 코드를 별도로 지정해야 한다. 예를 들어, "함수의 이름이 set으로 시작하는 경우, 로그시간을 계산한다" 가 있다. aop를 통해 비지니스 로직에 중요하지 않은 행위들이 코드의 중요 부분을 복잡하게 만들지않고 프로그램에 추가가 가능하다. AOP는 프로그램 로직을 개별의 부분으로 분리시킨다.(관심사의 분리라고도 한다.) 사실 거의 모든 프로그래밍 패러다임은 구현, 추상화, 관심사의 통합으로 사용될 수 있는 추상화(함수, 절차, 모듈, 클래스.. 2021. 8. 11. Spring MVC * Sprinv MVC Model : 비지니스 로직을 처리하고 해당 내용을 담는 공간이다. View : 클라이언트가 요청에 따른 화면에 Model에 저장된 결과를 나타낸다. Controller : 클라이언트의 요청을 받는다. * Spring MVC의 처리과정 Client로부터 요청이 들어오면 DispatcherServlet이 호출된다. DispatcherServlet은 받은 요청을 HandlerMapping에 전달한다. 요청받은 URL을 분석하여 적합한 Controller를 찾는다. DispatcherServlet는 HandlerAdapter를 호출한다. HandlerApdater는 2번에서 찾은 Controller을 통해 비지니스 로직을 처리한다.(Service, DB 이용) 비지니스 로직을 처리하고 .. 2021. 8. 8. IoC, DI IoC(Inversion Of Control) 스프링에서 일반적인 Java 객체를 new로 생성하여 개발자가 관리하는 것이 아닌 Spring Container에게 맡긴다. 즉, 개발자에서 프레임워크로 제어의 객체관리 권한이 넘어갔으므로 "제어의 역전"이라고 한다. DI(Dependency Injection) 장점 - 의존성으로부터 격리시켜 테스트에 용이하다 - 코드를 확장하거나 변경할 때 영향을 최소화한다(추상화) - 순환참조를 막을 수 있다. 순수히 객체를 생성하는 자바의 경우를 확인하자 Base64 와 Url 인코더 2개를 만들고 상황에 따라 적용하도록 코드를 짜본다. 1. Base64Encoder public class Base64Encoder { public String encode(String .. 2021. 8. 8. ObjectMapper ObjectMapper란? JSON 형식을 사용할 때, 응답들을 직렬화하고 요청들을 역직렬화 할 때 사용하는 기술이다. (*여기서 다소 생소한 JSON 형식, 직렬화, 역직렬화를 잠깐 살펴본다.) JSON(Javascript Object Notation) "키 :값" 쌍으로 이루어진 데이터 객체를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 포맷이다. 본래는 자바스크립트 언어로부터 파생되어 자바스크립트 구문 형식을 따르지만 플랫폼과 언어 독립형 데이터 형식이다. 따라서 프로그래밍언어나 플랫폼에 독립적이므로 C, 자바, 파이썬 등에서 JSON 데이터 생성을 위한 코드를 각자 가지고 있다. JS를 제외한 언어는 라이브러리를 사용해야하는 경우가 많다 직렬화 (Serialize) 데이터를 전송하거나 저.. 2021. 8. 6. HTTP vs. WWW HTTP vs WWW HTTP는 웹 브라우저(Client)와 웹 서버(Server)가 소통하기 위한 표준 '언어'이다. HTTP는 데이터가 한곳에서 다른곳으로 전송하며 온라인에서 커뮤니케이션이 가능하도록 하는 프로토콜이다. WWW는 하이퍼텍스트 문서들의 모음이다. World Wide Web이고 접두사로 많이 쓰인다. 웹 브라우저(FireFox, Google Chrome 등등)에서 확인할 수 있는 링크가 있는 하이퍼텍스트 문서들의 모음이다. 아래 사진은 link로 연결된 하이퍼텍스트 문서들이며 이들의 묶음이 WWW이다. 공통점은 HTTP와 WWW모두 웹사이트의 URL에서 사용된다는 것이다. HTTP VS WWW in URLs URL에서 HTTP나 WWW를 제거해도 된다. 그러나, 하나라도 제거하는 상황에는.. 2021. 8. 5. TIL_210803 1. Facts(사실, 객관) - javascript 렛츠기릿 가위바위보 강의 2. Feelings(느낌, 주관) - setInterval과 setTimeout을 사용하고 다시 취소하는 clearInterval과 clearTimeout까지 알아보았습니다. 혹여나 비동기 실행 주기보다 내부로직 시간이 길어졌을 때 어떤 차이가 있는지 등도 조사했습니다. 항상 강의를 듣고 끝내는 것이 아니라 실제 어느부분이 차이가 있는지 공부하고 기억하는 것은 굉장히 중요하다고 생각합니다. 말로는 이해하기 어려울 수 있어서 사진을 찾아보고 정리하였습니다. 비동기를 통해 원하는 때에 특정 함수를 실행하고 원하는 때에 멈추도록, 또한 다시 시작하는 것까지 만들었습니다. 3. Findings (배운 점) - notion에 정리한 .. 2021. 8. 5. TIL_210802 1. Facts(사실, 객관) - javascript 렛츠기릿 로또 강의 2. Feelings(느낌, 주관) - 항상 코딩은 문법과 언어 자체를 익히는 것을 넘어서서 직접 만들고 구현해봐야 이해가 빠르고 실력이 는다고 생각합니다. 그래서 이 강의가 javascript 초급이지만 제가 좋아하는 이유입니다. 게다가 중간중간 ES6 문법, 비동기 등 내용이 나와서 자연스럽게 익히기 좋습니다. 이번강의에서는 setTimeout과 setInterval, var로 인한 클로저 문제까지 많은 내용들을 배울 수 있었습니다. 이전에 단순히 ES5문법 강의로 봐서 이해가 되지 않았던 부분이 직접 만들고 적용하는 과정에서 이해가 됐습니다. 누군가 코딩을 공부하거나 배울 때, 또 제가 다른 언어를 배울 때 항상 내 상황에 적.. 2021. 8. 5. TIL_210730 1. Facts(사실, 객관) - 회사 ftp 이미지파일 전송 구현 개선 2. Feelings(느낌, 주관) - ftp 기술을 다 구현했다고 생각했는데, 빠뜨린 부분이 있었습니다. 주문번호, 문서번호, 날짜등으로 DB에 첨부파일명을 넣었었는데, 이 첨부파일명을 그냥 주문번호로 넣었습니다. 회사가 테스트코드 환경에서 작성이 가능했다면, 진작에 방어적인 코드를 만들 수 있었겠다는 아쉬움이 듭니다. 저는 로직을 일일이 확인하고 중간에 잘못한 부분이 없는지 로그로 확인을 해야 합니다. 테스트코드 책에서도 테스트코드를 작성하지 않아서 수정하는데 소요되는 시간이, 테스트코드를 작성해서 낭비하는 시간 없이 코드를 잘 작성하는 시간보다 오래 걸린다는 말이 기억이 납니다. 또한 FTP 기능이 사용될 곳으로 예상도는 여러.. 2021. 8. 5. 프록시 패턴 프록시란? 사전적 의미로는 대리인이다. 즉, 대신해서 처리한다. 프록시 클래스를 통해서 대신 전달 하는 형태로 설계된다. 실제 Client는 프록시로부터 결과를 얻는다. cache의 기능으로도 활용이 가능하다 SOLID 중에서 OCP, DIP를 따른다. Spring의 AOP는 프록시패턴으로 구현되어있다. Client : subject에 요청한다. 내부 처리로직은 알 필요가 없다. Proxy : Client 요청 중에 간단한 로직, 프록시에 저장된 요청들을 처리한다. realSubject : 무거운 로직, Proxy가 처리하지 못하는 내용들을 처리한다. //Html.java class Html { private String url; public Html(String url) { this.url = url;.. 2021. 8. 3. 이전 1 ··· 49 50 51 52 53 54 55 ··· 80 다음 반응형