일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- javascript
- JWT
- MySQL
- 알고리즘
- Linux
- winston
- node.js
- nestjs
- bean
- 인접리스트
- 탐욕법
- puppeteer
- css
- Deep Dive
- 코딩테스트
- 자료구조
- java
- 프로그래머스
- html
- GraphQL
- dfs
- Interceptor
- TIL
- typescript
- LifeCycle
- REST API
- OOP
- Spring
- Kubernetes
- 인접행렬
- Today
- Total
목록Spring (10)
처음부터 차근차근
데이터베이스 Connection pool이나 Network socket처럼 Application의 시작 시점에 필요한 연결을 미리 해두고, 애플리 케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요합니다. 이번 시간에는 스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 예제로 알아보겠습니다. 빈 생명주기 콜백 시작 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정해보겠습니다. (실제로는 네트워크에 연결하는 것이 아니라 단순 문자만 출력하도록 가정) 이 Class는 애플리케이션 시작 시점에 connect()를 호출해서 연결을 맺어두어야 하고, 애플리케이션이 종료되면 disConnect()를 호출해서 연결을 끊어야 합니다. 예제 코..
Spring에는 다양한 DI 방법이 존재합니다. 이번 시간에는 의존 관계를 자동으로 주입시켜주는 방법에 대해 학습해보겠습니다. 다양한 의존관계 주입 방법 의존관계 주입에는 크게 4가지 방법이 존재합니다. 생성자 주입 수정자 주입(setter 주입) Field 주입 일반 메서드 주입 생성자 주입 생성자를 통해서 의존 관계를 주입 받는 방법이며, 지금까지 진행했던 방법입니다. 특징 생성자 호출 시점에 딱 1번만 호출되는 것이 보장됩니다. 불변, 필수 의존관계에 사용합니다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final Dis..
지금까지 스프링 빈을 등록할 때는 @Bean 애너테이션이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했습니다. 하지만 이렇게 수동으로 등록하다보면 등록해야 하는 스프링 빈이 수십, 수백개가 되었을 때 일일이 등록하기도 귀찮고 설정 정보도 커지는 문제점이 발생합니다. 따라서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 Component Scan이라는 기능을 제공합니다. 또한 의존관계도 자동으로 주입하는 @Autowired도 제공합니다. ComponentScan, Autowired @Configuration // 컴포넌트 스캔을 사용하려면 애너테이션을 붙이면 됩니다. @ComponentScan( excludeFilters = @ComponentScan.Filter(type..
저번 포스팅에서 Spring Container에 대해서 설명하였습니다. 이번 시간에는 Spring 컨테이너가 기본적으로 Singleton Container로 구성되어 있는데, 왜 singleton으로 구성되어 있는지와, singleton 방식의 주의점 등을 알아보겠습니다. 웹 애플리케이션과 Singleton 스프링은 기본적으로 기업용 온라인 서비스 기술을 지원하기 위해 탄생하였습니다. 그리고 대부분의 스프링 Application은 Web Application입니다. 물론 웹이 아닌 앱 개발도 얼마든지 개발할 수 있습니다. 보통 여기서 문제점이 발생하는데, 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 진행하는 문제점이 발생합니다. 과거 포스팅에서 Spring이 없이 작성했던 AppConfig는 순수 ..
저번 포스팅에서는 객체 지향적으로 코드를 작성하고, 연결해봤으며, Spring을 사용할 경우 간단하다는 것을 알게 되었습니다. 이번에는 Spring을 통해 각 객체마다 어떻게 연결이 간편하게 되는지 알아보겠습니다. Spring Container와 Spring Bean 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공합니다. 그리고 스프링에서는 자바 객체를 빈(Bean)이라 합니다. Spring에 있는 자바 객체는 Repository, Service, Controller 등 다양한 객체가 있는데, 이들이 결합하여 하나의 Spring Application을 만드는 것입니다. 이때 이 자바 객체를 Component라고 부르기도 합니다. (Component : 하..
Java, Spring은 객체 지향 프로그래밍을 사용하는 언어와 프레임워크로 유명합니다. 하지만 프로젝트를 작성하다보면, 객체 지향의 원리들을 적용하지 못하고 코드를 작성할 때도 많습니다. 오늘은 이 부분을 한번 적용해보도록 하겠습니다. 객체 지향을 적용해보자 간단한 예시로 주문 서비스에 할인 정책이 있다고 가정해보겠습니다. 정액 할인 정책 : 1000원 할인 정률 할인 정책 : 구매금액의 10% 할인 초기 개발할 당시에는 정책이 정해지지 않아, interface만 작성했다고 가정하였습니다. OrderService의 구현 객체에서 할인 정책을 선택할 것인데, 둘 중 하나로 들어갈 것입니다. 초기에는 FixDiscountPolicy(정률 정책)을 한다고 하였으나 급하게 RateDiscountPolicy로 ..
이번 시간은 AOP에 대해서 간단하게 알아보고, Spring을 통해 적용해보겠습니다. Nest에서 비슷한 것은 Interceptor, Guard가 있을것 같슴니다. AOP AOP : Aspect Oriented Programming 공통 관심 사항(crosscutting concern)과 핵심 관심 사항(core concern)을 분리하기 위함 Ex : Logger, 모든 메서드의 실행 시간을 측정하고 싶을 때 시간 측정 AOP 등록 package hello.hellospring.aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation..
이번 포스팅은 개발 혹은 테스트 용도로 사용하는 H2 Database 설치를 진행해보겠습니다. 설치 환경 : 15 macbook air Mac M2 H2 Database 설치 진행 https://www.h2database.com h2 Database 버전은 Spring boot 3.x를 사용할 경우 2.1.214 버전 이상을 사용하면 됩니다. H2 Database 실행 권한 주기 : chmod 755 h2.sh 실행: ./h2.sh 실행 시키면 아마 크롬창이 로딩만 되는 상황이 자주 발생합니다. 이럴때는 Ip 주소를 localhost로 변경해주면 됩니다. DB 생성하기 H2에 접속하면 아래와 같은 화면이 나온다. 이후 연결하면 사용자 기본 폴더에 DB가 만들어진 것을 확인할 수 있습니다. DB를 만든 이..
이번 포스팅은 간단하게 Spring을 통해 다양한 방법으로 데이터를 전송해보겠습니다. 이번에는 간단하게 구현을 하는 포스팅이며, 자세한 설명은 추후 MVC 패턴 강의에서 배워보도록 하겠습니다. 정적 컨텐츠 Spring Boot에는 Static content 기능이 있습니다. 이는 HTML 문서를 보여줄 수 있는 기능입니다. 먼저 HTML 파일을 하나 만들어줍니다. 정적 컨텐츠 입니다. HTML 문서 작동 후 서버를 돌려 Test를 진행해 보겠습니다. http://localhost:8080/hello-static.html 간단한 그림을 통해 어떻게 작동된건지 구조를 살펴보겠습니다. 웹 브라우저에서 해당하는 URL 주소 확인 Tomcat에서 스프링 컨테이너에서 해당하는 컨트롤러를 확인 없는 경우 정적 페이지..
이번 포스트는 Spring을 통해 간단한 Project를 만들어보기 위해 기록하였습니다. Express와는 너무 다른 언어이기 때문에 (Nest는 약간 비슷하더라..?) 한번 공부해보겠습니다. 주의! 이 포스트는 기초를 위한 포스팅입니다. 프로젝트 생성 SpringBoot start 사이트로 들어가서 스프링 프로젝트를 생성합니다. https://start.spring.io/ 먼저 왼쪽에 보면 체크해야 할 것들이 보입니다. Project : Gradle - Groovy로 선택해줍니다.(코틀린 쓸 거 아니면..) Language : Java Spring Boot : 3.2.0으로 선택 나머지 Group과 Artifact를 마음대로 적어주면 됩니다. Package는 Jar, Java version 은 17로 ..