나를 기록하다
article thumbnail
[TIL-45/240315] MVC 패턴
TIL 2024. 3. 16. 00:10

MVC 패턴을 접한지는 어느덧 반년이 넘었다. MVC 패턴을 처음 접하고 Model, View, Controller를 구현하면서 정말 재미있게 구현했던 기억이 난다. 그러다가 Model, View, Controller에 이어서 Service를 분리하여 구현하는 코드를 접하게 되었다. 하지만 그때의 나는 왜 꼭 Service가 필요하지? Controller에서 모든 코드를 구현하면 안되나? 라고 생각하며 Service의 필요성을 확실하게 느끼지 못하였고, 현재까지도 개발할 때 Service를 만들긴 하였으나, 왜 Service가 필요한지, Controller와 어떻게 분리해야 하는지에 대한 확실한 이해가 없이 개발을 해왔던 것 같다. 그렇기 때문에 이번 기회를 통하여 Controller와 Service의 ..

article thumbnail
[TIL-44/240314] Filter & Interceptor
TIL 2024. 3. 15. 00:23

오늘은 Filter와 Interceptor에 대한 공부를 하였다. 먼저 Listener, Filter, Interceptor의 정의에 대해서 알아보고, 이번 내용의 핵심인 Filter와 Interceptor를 비교하면서 정리하고자 한다. Listener부터 시작하겠다. Listener, Filter, Interceptor Listener란? 프로그래밍에서 Listener란 특정 이벤트가 발생하기를 기다리다가 실행되는 객체 이벤트란 특정한 사건 발생 버튼 클릭 ,키보드 입력, 컨테이너 빌드 완료, 웹 어플리케이션 시작, HTTP 요청 수신 등 서블릿 컨테이너에서 발생하는 이벤트 감지 web.xml 파일에 태그를 이용하여 사용 가능 리스너가 여러 개일 경우 보통 선언된 순서대로 실행되지만 아닌 경우도 있음 ..

article thumbnail
[TIL-42/240312] 관점 지향 프로그래밍(AOP)
TIL 2024. 3. 12. 22:21

관점 지향 프로그래밍(AOP) AOP(Aspect Oriented Programming) 어플리케이션 로직에는 핵심 기능과 부가 기능이 존재 핵심 기능: 객체가 제공하는 고유의 기능 부가 기능: 핵심 기능을 보조하기 위한 기능(시간 측정, 로그 추적, 트랜잭션 관리 등) OOP에서 모듈화의 핵심 단위는 클래스, AOP에서 모듈화의 단위는 Aspect Aspect는 여러 타입과 객체에 거쳐서 사용되는 기능(Cross-Cutting, 트랜잭션 관리 등)의 모듈화 AOP는 OOP를 대체하는 것이 아닌 보조하는 것이 목적 AOP 용어 Target: 핵심 기능을 담고 있는 객체 → 부가기능을 부여할 대상 Aspect 여러 클래스에 공통적으로 적용되는 공통 관심 사항(AOP의 기본 모듈) Advice + Point..

article thumbnail
[TIL-19 / 230908] 람다식, Java MVC, Spring
TIL 2023. 9. 9. 13:14

오늘은 알고리즘 공부를 하면서 자주 마주쳤지만, 제대로 공부해보지 않았던 람다식, 그리고 프로젝트에 필요한 Java MVC, Spring에 대한 공부를 진행하였다. 람다식 람다식이란 함수를 하나의 식으로 표현한 것으로, 익명함수의 한 종류이다. 익명함수는 모두 일급 객체이고 일급 객체인 함수는 변수처럼 사용 가능하며 매개변수로 전달이 가능한 특징이 있다. 예시 기존 방식 new Thread(new Runnable() { @Override public void run() { System.out.println("Welcome Heejin blog"); } }).start(); 람다 방식 new Thread(()->{ System.out.println("Welcome Heejin blog"); }).start..

article thumbnail
[Interview] Spring, DI, IoC, ORM, JPA, Hibernate
CS/Interview 2023. 9. 9. 10:00

Spring 객체를 관리할 수 있는 컨테이너를 제공하는 프레임워크 예시 공통적으로 사용하는 객체가 있다고 가정 A 클래스, B 클래스, C 클래스가 있을 때 D 클래스의 인스턴스인 d를 사용하려면 메모리에 d를 3개(A, B, C 각각 생성) 생성해야함. → 같은 기능을 하는 d가 메모리에 3개가 존재하므로 굉장히 비효율적 → 공통으로 사용하는 하나는 같이 쓸 수 있게 컨테이너를 제공하는 것이 Spring Core 과거에는 EJB가 존재했다. EJB는 상속, 구현 등 복잡했다. 이것에 대한 불만을 가지고 만든 것이 Spring Spring은 순수 Java로 구성되어 있고 객체를 관리하는 역할을 한다. 오픈소스란 소스를 오픈하는 것. 즉 모두가 기능을 추가할 수 있도록 개발한 소스를 오픈하는 것을 말한다...

article thumbnail
[Spring] Spring MVC에서의 HTTP 요청 처리(Get,Post, @GetMapping, @PostMapping ...)
Error/Spring 2023. 9. 4. 00:18

Java + Spring Boot로 개인 미니 프로젝트를 진행하면서, Controller에서 자주 사용하는 HTTP 요청 처리 어노테이션인 @GetMapping과 @PostMapping이 헷갈려서 정리를 하고자 글을 작성한다. 우선 Get과 Post에 대해서 먼저 이해를 해보자. Get 용도 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드 데이터를 읽거나(Read), 검색(Retreive)할 때 사용되는 메서드로 요청을 전송할 때 URL 주소 끝에 파라미터로 포함되어 전송된다. 이 부분을 쿼리 스트링(Query String)이라고 부른다. 특징 URL에 데이터를 포함시켜서 요청 → 민감한 데이터를 사용할 때는 사용해선 안된다. 데이터를 Header에 포함하여 전송 데이터 길..

profile on loading

Loading...