junhkang의 개발 블로그
close
프로필 배경
프로필 로고

junhkang의 개발 블로그

  • DEV (103)
    • Postgresql (47)
    • Linux (4)
    • AWS (4)
    • 운영체제(OS) (1)
    • Spring (19)
    • 네트워크 (3)
    • Java (4)
    • WEB (2)
    • Elastic Search (1)
    • 이펙티브 자바 (10)
    • 디자인패턴 (5)
    • GitHub (1)
    • LLM (2)
  • 홈
  • 태그
  • 방명록
[Spring] 순환참조란? The dependencies of some of the beans in the application context form a cycle

[Spring] 순환참조란? The dependencies of some of the beans in the application context form a cycle

1. 순환참조란? 순환참조는 맞물린 의존성 주입 (DI) 상태에서 어떤 빈을 먼저 생성할지 결정하지 못해서 생기에 발생한다. BeanA에서 BeanB를 참조(BeanA->BeanB) 일 경우 스프링은 BeanB를 먼저 생성 후 BeanA를 생성하기에, BeanB에서 다시 BeanA를 참조할 경우 (BeanA->BeanB->BeanA) 순환 참조가 발생하게된다. 2. 의존성 주입 의존성 주입의 3가지 상황 (생성자 주입방식, 필드 주입방식, Setter주입)에서 순환참조가 발생할수 있다. 다음 포스트 각각의 상세 내용을 확인할 수 있고, 이번 포스트에서는 각각의 경우에 순환참조가 발생하면 어떤 차이점이 있는지 확인해 보자. 2023.11.06 - [Spring] - [Spring] IoC(제어의 역전) &..

  • format_list_bulleted Spring
  • · 2023. 11. 17.
  • textsms
[Spring] 단위 테스트, JUnit의 개념 및 단위 테스트 코드 작성 방법

[Spring] 단위 테스트, JUnit의 개념 및 단위 테스트 코드 작성 방법

1. 단위 테스트 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다. 통합 테스트의 경우 시스템을 구성하는 컴포넌트들이 커질수록 테스트 시간이 길어지지만, 단위 테스트의 경우 해당 부분만 독립적으로 테스트하기에 코드의 변경이 있어도 빠르게 문제 여부를 확인할 수 있다. CleanCode 책에 의하면 깨끗한 테스트 코드는 다음 5가지 규칙을 따라야 한다. Fast - 빠르게 동작하여 자주 돌릴 수 있어야 한다. Independent - 테스트는 독립적이며 서로 의존해서는 안된다. Repeatable - 어느 환경에서도 반복이 가능해야 한다. Self-validating - 테스트는 성공 또는 실패로 결과를 내어 자체 검증되어야 한다. Timely - 테스트는 적시에, 테스트하려는 실제..

  • format_list_bulleted Spring
  • · 2023. 11. 14.
  • textsms
[Spring] 스프링 컨테이너(Spring container)의 개념

[Spring] 스프링 컨테이너(Spring container)의 개념

1. 스프링 컨테이너(Spring container)란? 스프링 프레임워크의 핵심 컴포넌트이며 주요한 용도는 다음과 같다. 객체의 생명주기 관리 생성된 객체들의 추가적인 기능 제공 스프링에서는 자바 객체를 빈(Bean)이라고 하며 컨테이너는 내부의 빈 라이프사이클(생성, 제거 등)을 하며 추가 기능을 제공한다. 기존 스프링에서는 xml 파일로 설정하나 스프링 부트에서는 자바 클래스에서 설정가능하다. 주요 설정으로는 [수동] @Configuration - 어플리케이션 구성정보를 등록 @Bean - 메서드를 모두 호출하여 반환된 객체를 스프링 컨테이너에 등록 [자동] @ComponentScan - 해당 클레스클래스 패키지와 하위의 @Component, @Service, @Repository, @Control..

  • format_list_bulleted Spring
  • · 2023. 11. 7.
  • textsms
[Spring] IoC(제어의 역전) & DI(의존성 주입)의 개념

[Spring] IoC(제어의 역전) & DI(의존성 주입)의 개념

1. IoC (Inversion of Control) 제어의 역전 IoC란 메인 프로그램에서 컨테이너나 프레임워크로 객체와 객체의 의존성에 대한 제어를 넘기는 것을 말한다. 프레임워크 없이 개발할 때는 각 객체에 대한 라이프사이클 (생성, 설정, 초기화, 호출 등)을 개발자가 직접 관리한다. 하지만 프레임워크를 사용하면 객체의 생명주기를 프레임워크에 위임하여, 프레임워크가 개발자의 코드를 호출하고 흐름을 제어하게 할 수 있다. 이처럼, 제어의 역전은 객체를 직접 생성하거나 제어하는 것이아니라 외부에서 관리하는 객체를 가져와서 사용하는 것으로, 클레스 간의 결합을 느슨하게 하여 테스트와 유지관리를 더 쉽게 설계하는 원칙이다. IoC는 설계 패턴이 아닌 원칙이며 세부 구현은 개발자에게 달려있다. 스프링 컨테..

  • format_list_bulleted Spring
  • · 2023. 11. 6.
  • textsms
[Spring] 스프링부트 + Mybatis 데이터소스 여러개 연결 (스프링 다중 데이터베이스 연결)

[Spring] 스프링부트 + Mybatis 데이터소스 여러개 연결 (스프링 다중 데이터베이스 연결)

다음은 스프링부트 + 마이바티스 프로젝트에 2개 이상의 데이터소스를 연결하는 예제이다. 기존 스프링 데이터베이스 연동이 되어있다고 가정 후 진행되며, 신규 데이터베이스는 구별이 쉽도록 new 데이터베이스로 명칭 한다. 1. 신규 데이터베이스 접속정보 추가 추가될 데이터베이스의 속성을 application.properties에 추가 #기존 DB Setting spring.datasource.url={url} spring.datasource.driverClassName={driverClassName} spring.datasource.username={username} spring.datasource.password={password} spring.datasource.schema={schema} #추가될 DB..

  • format_list_bulleted Spring
  • · 2023. 10. 20.
  • textsms
[Spring] 스프링 배치 ItemReader의 개념, (MybatisCursorItemReader, MybatisPagingItemReader 구현)

[Spring] 스프링 배치 ItemReader의 개념, (MybatisCursorItemReader, MybatisPagingItemReader 구현)

1. ItemReader란? 스프링 배치의 ItemReader는 다음과 같은 과정을 거쳐 데이터를 처리한다. 대부분의 데이터 형태는 이미 ItemReader로 제공하고 있기에 ItemReader, ItemStream 인터페이스 자체를 구현할 필요는 없다. ItemReader는 Chunk 기반 트랜잭션을 다루며 Cursor, Paging 가 대표적인 2가지 방식이다. 2. Cursor, Paging 형식 2-1. Cursor기반 ItemReader JDBC ResultSet의 기본 기능이다. ResultSet이 Open 될 때마다 데이터베이스의 데이터가 반환된다. 데이터베이스와 연결 맺은 후 데이터를 Streaming 방식으로 I/O이다. 현재 행에서Cursor를 유지하며 다음 데이터를 호출하면 Curso..

  • format_list_bulleted Spring
  • · 2023. 10. 19.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • navigate_next
전체 방문자
오늘
어제
전체
전체 카테고리
  • DEV (103)
    • Postgresql (47)
    • Linux (4)
    • AWS (4)
    • 운영체제(OS) (1)
    • Spring (19)
    • 네트워크 (3)
    • Java (4)
    • WEB (2)
    • Elastic Search (1)
    • 이펙티브 자바 (10)
    • 디자인패턴 (5)
    • GitHub (1)
    • LLM (2)
최근 글
인기 글
태그
  • #티스토리챌린지
  • #Effective Java
  • #이펙티브자바
  • #PostgreSQL
  • #오블완
  • #AWS
  • #test
  • #Index
  • #spring
  • #디자인패턴
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바