Spring

Spring과 Spring과 관련된 것을 공부하고 기록합니다.

Spring - Scheduling 방식

Scheduler, Cron 표현식, Quartz

Scheduling 이란? 일정시간 간격으로 반복적인 작업을 수행하는 도구 배치 스케줄링과 다른 점: 배치 프로그램은 대량의 데이터를 처리하는 작업을 자동화 하는 프로그램을 의미한다. 배치 프로그램은 일괄 처리를 위한 프로그램이며 정해진 시간에 실행되지 않고 사용자의 명령이 있을 때 실행한다. 스케줄...

Spring - 의존성 주입

스프링의 원리

스프링의 핵심 원리 IoC (Inversion of Control) IoC : 제어의 역전 객체 생성과 의존 관계 설정을 개발자가 직접 관리하는 대신 스프링 컨테이너가 담당하도록 하는 것 기존 방식: 1 2 3 4 class Service { private Dao dao = new DaoImpl(); // 개발자가 직접 생성 ...

Spring - 레이어드 아키텍처, 클린 아키텍처, 핵사고날 아키텍처, 도메인 주도 설계

아키텍처에 대한 고찰

최근 2주간 집중적으로 사이드 프로젝트로 개발을 해보며 느낀 것 1. 단일 책임 원칙(SRP)을 따르는 방법은 무엇인가? 서비스 구조를 설계하면서 고민이 되었던 부분이 있다. 서비스 계층으로 책임을 분리할 것인가, 도메인 계층으로 책임을 분리할 것인가? 내가 여기서 말한 서비스 계층으로 책임을 분리한다는 것은 서비스가 다른 서비스를 호출하는...

Spring - JPA의 mapped by

jpa 이해하기

JPA에서 Mapped by 1. Mapped by란 무엇인가? JPA에서 @OneToMany 및 @ManyToMany 관계를 정의할 때 사용하는 어노테이션이다. 주체 엔티티에서 역관계 엔티티를 참조하는 필드에 사용하며, 역관계 엔티티에서 주체 엔티티를 참조하는 필드를 찾도록 지시하는 역할을 한다. 주체(owning) 엔티티에서 역방향 관계(inv...

Spring - transactional annotation

annotation 이해하기

Transactional 트랜잭션이란, 데이터베이스의 데이터를 조작하는 작업의 단위(unit of work) 데이터 베이스의 상태를 변경하는 작업, 또는 한번에 수행되어야 하는 연산들을 의미 begin, commit을 자동으로 수행해주고, 예외 발생시 rollback처리를 자동으로 수행해준다. 트랜잭션의 4가지 성질 ACID ...

Spring - spring security filter chain

filter chain 뜯어보기

Spring security FilterChain의 정의 FilterChain은 웹 애플리케이션에서 보안을 처리하는 데 사용되는 필터(또는 인터셉터)의 연쇄이다. FilterChain은 Spring Security가 제공하는 여러 필터들이 순차적으로 실행되도록 구성되어 있다. 각 필터는 특정한 보안 작업을 담당하며, 전체적으로 연결되어...

Spring - RequiredArgsConstructor, ExceptionHandler, ControllerAdvice

annotation 알고 쓰기

annotation 1. RequiredArgsConstructor 속성에 final을 적용하고 롬복의 @RequiredArgsConstructor 애너테이션을 적용하면 해당 속성을 필요로하는 생성자가 롬복에 의해 자동으로 생성된다. (※ final이 없는 속성은 생성자에 포함되지 않는다.) 1 2 3 4 5 6 7 8 9 10 11 12 13...

Spring - 프로젝트 구조 뜯어보기

build.gradle에 대해 알기

SPRING의 구조 src/main/resources 디렉터리 src/main/resources 디렉터리는 자바 파일을 제외한 HTML, CSS, Javascript, 환경파일 등을 작성하는 공간이다. templates 디렉터리 src/main/resources 디렉터리의 하위 디렉터리인 templates 디렉터리에는 템플릿 파일을 저장한다. ...

Spring - Test Fixture

Test Fixture의 이해

Test Fixture 여러 테스트에서 같은 데이터를 사용해야 할 때, 코드의 중복을 없애주는 역할을 하는 테스트 전용 데이터 @org.junit.Before로 메소드에 주석을 달고 해당 메소드의 변수를 초기화한다. @Before, @BeforeClass @org.junit.After 로 메서드에 주석을 달아 setUp 에서 할당한...

Spring - Web application의 이해

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

Web Server vs Web Application Server (WAS) 웹 서버 Http 기반으로 동작 정적 리소스 제공, 기타 부가기능 정적 리소스 : HTML, CSS, JS, 이미지, 영상 예) NGINX, APACHE Client(사용자)로 부터 HTTP Request를 받은 후 HTML, CSS, JS 등과 같은 정...

Spring - HttpMessageConverter, ObjectMapper

Jackson 라이브러리의 ObjectMapper

ObjectMapper란? JSON 컨텐츠를 Java 객체로 deserialization 하거나 Java 객체를 JSON으로 serialization 할 때 사용하는 Jackson 라이브러리의 클래스이다. ObjectMapper는 생성 비용이 비싸기 때문에 bean/static으로 처리하는 것이 좋다. Java 객체를 Json으로 1 ...

Spring - MockMvc

Spring MVC 테스트 프레임워크

MockMvc란? Spring MVC 테스트 프레임워크 MockMvc는 웹 어플리케이션을 애플리케이션 서버에 배포하지 않고 테스트용 MVC환경을 만들어 요청 및 전송, 응답기능을 제공해주는 유틸리티 클래스 MockMvc를 사용하면, API를 실제로 호출하지 않고도 API의 동작을 시뮬레이션하여 API의 동작을 검증할 수 있다. Moc...

Spring - application.yml

application.yml

application.yml 유용한 설정 모음 1. debug: false 디버그 로그를 찍을 건지 여부를 선택 true 이면 spirng boot의 디버깅 로그를 다같이 볼 수 있음 false 이면 logback만 확인 가능 2. manage.endpoints.web.exposure.include: “*” Spring b...

Spring - lib config

ModelMapper, abstractController 등

ModelMapper 객체 매핑 라이브러리다. 서로 다른 클래스의 값을 한 번에 복사하게 도와주는 라이브러리다. 어떤 Object에 있는 필드 값들을 자동으로 원하는 Object에 매핑시켜준다. 클래스 내부에 있는 변수들의 이름을 분석하여 자동 매핑시켜주는 방식 매핑해줄 클래스에는 setter가 있어야 하고 매핑이 되는 클래스에서...

Spring - cloud

Spring을 이용한 MSA

Web Service와 Restful Service 웹 서비스를 구현할 때 두 가지 기술을 사용할 수 있다. web service vs RESTful service web service 기술은 호출 당사자 사이에 엄격한 계약이 있을 경우에 적절한 선택이 될 수 있다. 관공서 등에서 사용한다. XML 사용 SOA...

Spring - Security, JWT, 인증, 인가에 대해

Security & JWT

📌 스프링 시큐리티 (Spring Security) 스프링 시큐리티란 어플리케이션의 보안(인증 및 인가)을 담당하는 라이브러리 서블릿 필터와 이들로 구성된 filterChain으로 구성된 위임 모델을 사용한다. 보안 관련해서 많은 옵션을 제공해주어 개발자가 일일이 보안 관련 로직을 작성하지 않아도 된다는 장점이 있다. Spring Se...

Spring - Batch

금융 IT와 Batch는 떼려야 뗄 수 없는 관계

요즘은 매일 Batch test가 진행되고 있다. 여신은 유이자 이행, 상환 등등의 배치 프로세스가 중요한 부분을 차지한다. 배치에 대해서 알아보자! 스프링 배치 (Spring Batch) 배치 == 일괄처리. 즉 일련의 작업을 정해진 로직으로 수행하는 것이다. 배치를 사용하는 이유 대용량 비즈니스 데이터를 복잡한 작업으로 ...

Spring - 의존성을 이용해 설계 진화시키기

우아한테크세미나

의존성을 이용해 설계 진화시키기 의존성을 어떻게 관리하는 것이 좋은가? 의존성을 어떻게 관리하느냐에 따라 설계가 어떻게 변하는지 알아보기 설계가 뭔가요? 어떤 프로젝트에, 어떤 패키지에, 어떤 클래스에 어떤 코드를 넣을 것인지 결정하는 것이다. 핵심은 변경에 초점을 맞추는 것이다. 함께 변하는 코드를 같은 클래스에 넣는...

Spring - 면접질문 모음

면접 대비를 해보자

MVC 패턴 SpringMVC란 무엇인가요? 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세 가지 역할로 구분한 패턴. 사용자가 controller를 조작하면 controller는 model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 view를 제어해서 사용자에게 전달하게 된다. M...

Spring - VO와 DTO의 차이

Value Object vs Data Transfer Object

DTO Data transfer Object 전송되는 데이터의 컨테이너 (Java Beans) DB의 데이터를 로직을 갖고 있지 않은 순수한 데이터 객체로 가져오는 것. getter, setter메소드만 가진다. 데이터를 저장하여 사용하도록 한다 같은 시스템에서 사용되는 것이 아닌 다른 시스템으로 전달하는 작업을 처리하는 객체다. ...

Spring - POJO란?

Plain Old Java Object

POJO Plain Old Java Object Java EE등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 무거운객체를 만들게 된 것에 반발해서 사용하게 된 용어 우리는 사람들이 자기네 시스템에 보통의 객체를 사용하는 것을 왜 그렇게 반대하는지 궁금하였는데, 간단한 객체는 폼 나는 명칭이 없기 때문에 그랬던 것이라고...

Spring - 객체지향 SOLID 5원칙

인프런 <스프링 핵심 원리 - 기본편>을 들으면서 정리

보다 유지보수하기 쉽고, 유연하고, 확장이 쉬운 소프트웨어를 만들기 위해서는 객체지향 디자인 원리를 알아야한다. SOLID 클린코드로 유명한 로버트 마틴은 좋은 객체 지향 설계의 5가지 원칙을 정리했다. 1. SRP 단일 책임 원칙 single reponsibility principle 한 클래스는 하나의 책임만 가져야 한다. ...

Spring - 의존관계 주입

인프런 <스프링 핵심 원리 - 기본편>을 들으면서 정리

의존관계를 주입하는 4가지 방법 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메소드 주입 생성자 주입 생성자를 통해서 의존관계를 주입 받는 방법 특징 생성자 호출 싲점에 1번만 호출되는 것이 보장된다 불변, 필수 의존관계에 사용 1 2 3 4 5 6 7 8...

Spring - 환경설정

<스프링 인 액션>을 읽으면서 정리

스프링 프로젝트 시작하기 기본적으로 프로젝트 위저드는 https://start.spring.io의 스프링 Initializr를 호출하여 프로젝트를 생성한다 스프링 프로젝트 구조 src/main/java : 애플리케이션 소스 코드 src/test/java : 테스트 코드 src/main/resources : 자바 리소스가 아닌 ...

Spring - MVC 웹 프레임워크란?

Model View Controller

model, view, controller의 간단한 의미 View 눈에 보이는 것 (html, css) Controller 프로그래밍이 이루어지는 곳. 제어하는 곳 (view와 model을 연결하고 데이터를 읽고 쓰고 지우고 등등을 할 수 있게 하는 곳) Model 데이터에 관한 것. 데이터베이스에 저장될 데이터들의 구조화, 저장하고 불러오...