분류 전체보기
-
이번 포스트에서는 Spring이 관리하는 빈의 생명주기(Life Cycle)에 대해 살펴보자. 빈의 생명 주기 빈의 생명 주기 스프링의 빈은 다음과 같은 생명 주기를 갖는다. 생성자를 호출하여 객체를 생성한다. 1의 과정을 통해 생성자 주입을 하거나 별도의 setter 메서드를 이용해서 의존성을 주입한다. 아직 빈을 활용하기 이전에 초기화 메서드를 실행한다. 빈을 사용한다. 빈을 다 사용한 후 소멸 메서드를 실행한다. 초기화 및 소멸 메서드 초기화 메서드와 소멸 메서드에 대해 살펴보자. 초기화 메서드 소멸 메서드 주요 용도 빈에서 사용하려는 자원의 초기화 빈에서 사용한 자원의 정리 호출 시점 의존성 주입 후 비지니스 로직이 호출되기 전 모든 비지니스 로직이 종료된 후 작성 방법 명시적 빈 등록: @Pos..
07. 빈의 생명주기이번 포스트에서는 Spring이 관리하는 빈의 생명주기(Life Cycle)에 대해 살펴보자. 빈의 생명 주기 빈의 생명 주기 스프링의 빈은 다음과 같은 생명 주기를 갖는다. 생성자를 호출하여 객체를 생성한다. 1의 과정을 통해 생성자 주입을 하거나 별도의 setter 메서드를 이용해서 의존성을 주입한다. 아직 빈을 활용하기 이전에 초기화 메서드를 실행한다. 빈을 사용한다. 빈을 다 사용한 후 소멸 메서드를 실행한다. 초기화 및 소멸 메서드 초기화 메서드와 소멸 메서드에 대해 살펴보자. 초기화 메서드 소멸 메서드 주요 용도 빈에서 사용하려는 자원의 초기화 빈에서 사용한 자원의 정리 호출 시점 의존성 주입 후 비지니스 로직이 호출되기 전 모든 비지니스 로직이 종료된 후 작성 방법 명시적 빈 등록: @Pos..
2024.02.23 -
이번 포스트에서는 빈의 스코프에 대해 살펴보자. 빈의 스코프(Scope) 축 개업! 새롭게 하나의 CoffeeShop을 개업한다고 생각해보자. CoffeeShop에는 Barista가 근무할텐데 이 Barista는 손이 엄청 빠르기 때문에 아무리 많은 주문이 들어와도 순식간에 처리할 수 있다. 즉 맛있게 커피를 만들 수 있는 단 한 명만 필요하다. 그리고 CoffeeShop은 인기가 많아서 엄청나게 많은 Coffee가 팔리고 있다. 일단 이 일과 관련된 3개의 클래스를 작성해보자. @Data public class Coffee { private final String client; private final String name; } public class Barista { public Coffee make..
06. 빈의 스코프이번 포스트에서는 빈의 스코프에 대해 살펴보자. 빈의 스코프(Scope) 축 개업! 새롭게 하나의 CoffeeShop을 개업한다고 생각해보자. CoffeeShop에는 Barista가 근무할텐데 이 Barista는 손이 엄청 빠르기 때문에 아무리 많은 주문이 들어와도 순식간에 처리할 수 있다. 즉 맛있게 커피를 만들 수 있는 단 한 명만 필요하다. 그리고 CoffeeShop은 인기가 많아서 엄청나게 많은 Coffee가 팔리고 있다. 일단 이 일과 관련된 3개의 클래스를 작성해보자. @Data public class Coffee { private final String client; private final String name; } public class Barista { public Coffee make..
2024.02.22 -
AOP는 우리의 코드에서 횡단 관심 사항을 분리해 줌으로 엄청난 자동화를 이룰 수 있다. 하지만 잘못 사용하면 큰 난관에 부딪힐 수도 있으니 주의해야 한다. AOP 작성 주의 사항 일반적인 작성 시 주의 사항AOP를 잘못 사용하면 예기치 못한 큰 문제를 일으킬 수 있다. 좀 억지로 만들어본 코드지만 다음과 같이 advice를 설정하면 어떤 일이 발생할까?@Before("execution(* *(..))")public void toAllMethod(JoinPoint jp) { // do something}이 코드는 프로젝트의 모든 빈의 메서드에게 영향을 줄것이다. 이로 인한 부작용은 심각할 수 있다. 따라서 AOP를 사용할 때는 적용 대상을 정확히 파악하고 꼭 필요한 내용만 AOP로 작성해야 한다.AOP..
06. AOP 작성 주의 사항AOP는 우리의 코드에서 횡단 관심 사항을 분리해 줌으로 엄청난 자동화를 이룰 수 있다. 하지만 잘못 사용하면 큰 난관에 부딪힐 수도 있으니 주의해야 한다. AOP 작성 주의 사항 일반적인 작성 시 주의 사항AOP를 잘못 사용하면 예기치 못한 큰 문제를 일으킬 수 있다. 좀 억지로 만들어본 코드지만 다음과 같이 advice를 설정하면 어떤 일이 발생할까?@Before("execution(* *(..))")public void toAllMethod(JoinPoint jp) { // do something}이 코드는 프로젝트의 모든 빈의 메서드에게 영향을 줄것이다. 이로 인한 부작용은 심각할 수 있다. 따라서 AOP를 사용할 때는 적용 대상을 정확히 파악하고 꼭 필요한 내용만 AOP로 작성해야 한다.AOP..
2024.02.16 -
이번 포스트에서는 inline 형태로 Thymeleaf를 사용하는 방법에 대해 살펴보자. inline style inlie expression 기본적으로 Thyleleaf는 html 태그에 사용자 정의 속성을 이용해서 부가적인 기능을 추가한다. inline style은 사용자 정의 속성 없이 [[${...}]] 처럼 두 개의 대괄호 내에 표현식을 작성하는 방식이다. property 사용 attribute 사용 제목: [[#{home.title}]] 사용자: [[${user.name}]] 만약 [[]] 자체를 사용해야 하는 경우에는 th:inline="none"을 이용해서 escape 시켜줘야 한다. A double array looks like this: [[1, 2, 3], [4, 5]]! inline..
[Thymeleaf] 06. inline style이번 포스트에서는 inline 형태로 Thymeleaf를 사용하는 방법에 대해 살펴보자. inline style inlie expression 기본적으로 Thyleleaf는 html 태그에 사용자 정의 속성을 이용해서 부가적인 기능을 추가한다. inline style은 사용자 정의 속성 없이 [[${...}]] 처럼 두 개의 대괄호 내에 표현식을 작성하는 방식이다. property 사용 attribute 사용 제목: [[#{home.title}]] 사용자: [[${user.name}]] 만약 [[]] 자체를 사용해야 하는 경우에는 th:inline="none"을 이용해서 escape 시켜줘야 한다. A double array looks like this: [[1, 2, 3], [4, 5]]! inline..
2024.01.14 -
이번 포스트에서는 Thymeleaf에서 페이지의 레이아웃을 재사용하기 위한 thymeleaf-layout-dialect에 대해 살펴보자. 레이아웃 재사용 웹 페이지 레이아웃의 특징 Thymeleaf에서는 th:fragment, th:insert, th:replace를 이용해서 페이지마다 반복되는 뷰 부분(fragment)을 모듈화 하고 재사용할 수 있었다. 웹 페이지를 작성하다 보면 이런 fragment 만 복되드는 것이 아니라 레이아웃도 반복되는 것을 쉽게 알 수 있다. 위 그림을 보면 regist.html과 modify.html은 header+footer fragment에 각각의 content가 들어간 것을 알 수 있다. detail.html과 manage.html은 base-layout에 추가로 c..
[Thymeleaf] 05.레이아웃 재사용이번 포스트에서는 Thymeleaf에서 페이지의 레이아웃을 재사용하기 위한 thymeleaf-layout-dialect에 대해 살펴보자. 레이아웃 재사용 웹 페이지 레이아웃의 특징 Thymeleaf에서는 th:fragment, th:insert, th:replace를 이용해서 페이지마다 반복되는 뷰 부분(fragment)을 모듈화 하고 재사용할 수 있었다. 웹 페이지를 작성하다 보면 이런 fragment 만 복되드는 것이 아니라 레이아웃도 반복되는 것을 쉽게 알 수 있다. 위 그림을 보면 regist.html과 modify.html은 header+footer fragment에 각각의 content가 들어간 것을 알 수 있다. detail.html과 manage.html은 base-layout에 추가로 c..
2024.01.14 -
이번 포스트에서는 객체지향 프로그래밍 설계의 5가지 주요 원칙인 S.O.L.I.D.에 대해 살펴보자. SRP(Single Responsibility Princlple: 단일 책임 원칙) 개요 객체의 응집도(cohesion)에 관한 내용으로 하나의 클래스는 하나의 책임만 가진다. 클래스가 제공하는 모든 기능은 그 책임을 수행하는데 집중한다. 환경이 바뀌어 완전히 새로운 기능을 가져야 한다면 그 클래스는 분할되어야 한다. 주로 클래스의 설계 즉 추상화와 연관된 개념이다. 설명 SRP는 다른 원칙들에 비해 가장 손쉽게 설명이 가능한 원칙이다. 주변에 있는 큰 패밀리 레스토랑에 가보자. 많은 직원들이 요리, 서빙, 안내, 정리 등 다양한 업무를 보고 있다. 그런데 이들은 모두 자기의 업무에 집중한다. 만약 한 ..
S.O.L.I.D.이번 포스트에서는 객체지향 프로그래밍 설계의 5가지 주요 원칙인 S.O.L.I.D.에 대해 살펴보자. SRP(Single Responsibility Princlple: 단일 책임 원칙) 개요 객체의 응집도(cohesion)에 관한 내용으로 하나의 클래스는 하나의 책임만 가진다. 클래스가 제공하는 모든 기능은 그 책임을 수행하는데 집중한다. 환경이 바뀌어 완전히 새로운 기능을 가져야 한다면 그 클래스는 분할되어야 한다. 주로 클래스의 설계 즉 추상화와 연관된 개념이다. 설명 SRP는 다른 원칙들에 비해 가장 손쉽게 설명이 가능한 원칙이다. 주변에 있는 큰 패밀리 레스토랑에 가보자. 많은 직원들이 요리, 서빙, 안내, 정리 등 다양한 업무를 보고 있다. 그런데 이들은 모두 자기의 업무에 집중한다. 만약 한 ..
2024.01.09 -
이번 포스트에서는 Thymeleaf에서의 layout 작성 방법에 대해 알아보자. Thymeleaf 레이아웃 th:fragment 일반적으로 웹 페이지들은 header, footer 등 반복적으로 등장하는 요소들을 가지며 이들을 매번 만들지 않고 fragment 같은 조각으로 만들어 놓고 재사용 한다. 이를 위해 Thymeleaf에서는 th:fragment를 사용한다. /src/main/resources/fragments 아래처럼 header.html과 footer.html을 만들어보자. header를 구성할 때는 각 페이지의 부제목(subtitle)을 파라미터로 전달받아서 사용하기 위해 header(subtitle)의 형태를 사용할 수 있다. Welcome To Thymeleaf Test Page 부제..
[Thymeleaf] 04. 레이아웃이번 포스트에서는 Thymeleaf에서의 layout 작성 방법에 대해 알아보자. Thymeleaf 레이아웃 th:fragment 일반적으로 웹 페이지들은 header, footer 등 반복적으로 등장하는 요소들을 가지며 이들을 매번 만들지 않고 fragment 같은 조각으로 만들어 놓고 재사용 한다. 이를 위해 Thymeleaf에서는 th:fragment를 사용한다. /src/main/resources/fragments 아래처럼 header.html과 footer.html을 만들어보자. header를 구성할 때는 각 페이지의 부제목(subtitle)을 파라미터로 전달받아서 사용하기 위해 header(subtitle)의 형태를 사용할 수 있다. Welcome To Thymeleaf Test Page 부제..
2023.12.14 -
이번 포스트에서는 Thymeleaf에서의 제어문에 대해 살펴보자. 반복문 th:each Thymeleaf에서 반복문을 사용하기 위해서는 th:each를 사용한다. 반복의 대상은 배열이나 Collection, Stream 등이 가능하다. 간단히 th:each="item, status: ${iterable}" 문장의 사용예를 보면서 사용법을 익혀보자. noidageaddr count name age addr th:each는 for-each 문장과 유사하게 iterable 한 요소를 하나씩 item으로 분리해서 사용한다. item은 다시 ctx의 속성으로 등록되므로 ${item} 형태로 사용할 수 있다. 상태 관리 옵션으로 사용되는 status는 반복도는 상황을 체크하기 위한 여러 속성이 제공된다. statu..
[Thymeleaf] 03. 제어문이번 포스트에서는 Thymeleaf에서의 제어문에 대해 살펴보자. 반복문 th:each Thymeleaf에서 반복문을 사용하기 위해서는 th:each를 사용한다. 반복의 대상은 배열이나 Collection, Stream 등이 가능하다. 간단히 th:each="item, status: ${iterable}" 문장의 사용예를 보면서 사용법을 익혀보자. noidageaddr count name age addr th:each는 for-each 문장과 유사하게 iterable 한 요소를 하나씩 item으로 분리해서 사용한다. item은 다시 ctx의 속성으로 등록되므로 ${item} 형태로 사용할 수 있다. 상태 관리 옵션으로 사용되는 status는 반복도는 상황을 체크하기 위한 여러 속성이 제공된다. statu..
2023.12.14