CS 8

[CS] 컴포넌트 스캔과 의존관계 주입

지금까지 스프링 빈을 등록할 때 자바 코드의 @Bean 이나 XML의 등을 통해서설정 정보에 직접 등록한 스프링 빈을 나열했다.이렇게 등록해야 할 스프링 빈이 수십,수백개가 되면 일일이 등록하기 귀찮고, 설정 정보가 커지고, 누락하는 문제도 발생한다.그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔을 제공한다.또한 의존관계도 자동으로 주입하는 @Autowired 기능도 제공한다.컴포넌트 스캔컴포넌트 스캔이란?스프링 컨테이너가 클래스패스를 탐색하면서 특정 애노테이션이 붙은 클래스를 자동으로 스프링 빈으로 등록하는 기능즉, 개발자가 일일이 등록하지 않아도 스프링이 스프링 빈으로 등록해준다.컴포넌트 스캔 장점설정 코드 감소수십,수백 개의 빈을 일일이 등록할 필요 없음설정 파일이 ..

CS 2026.01.27

[CS] 싱글톤과 싱글톤 컨테이너

싱글톤 패턴순수한 DI 컨테이너 @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); //1. 조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회: 호출할 때 마다 객체를 생성 MemberService memberService2 = appConfig.memberService(); //참조값이 다른 것을 확인 System.out.println("memberService1 = " + memberService1); Syste..

CS 2026.01.27

[CS] 스프링 컨테이너, 스프링 빈

스프링에서는 누가 객체를 만들고, 누가 관리할까?그 역할을 담당하는 것이 스프링 컨테이너고, 그 안에서 관리되는 객체가 스프링 빈이다.이번 글에서는 스프링 컨테이너, 빈이 무엇인지 , 왜 필요한지 정리하려고 한다.스프링 컨테이너스프링 컨테이너란?스프링 컨테이너는 자바 객체(빈)의 생명 주기(생성,관리,제거 등)를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공한다.쉽게 말하면, 스프링 컨테이너는 객체를 대신 만들어주고, 관리해주는 관리자라고 볼 수 있다.개발자는 객체를 직접 생성하지 않아도 되고,스프링 컨테이너가 빈(Bean) 이라는 객체를 생성한 뒤, 객체들 사이의 관계를 자동으로 연결해준다.이렇게 객체 생성과 제어의 주도권이 개발자가 아닌 스프링에게 넘어가는 것을 IoC, 제어의 역전이라고 한..

CS 2026.01.26

[CS] - Spring vs Spring Boot

프레임워크 vs 라이브러리프레임워크프레임워크(Framework) 는 애플리케이션을 만들기 위한 뼈대(구조)와 규칙을 미리 제공하는 도구이다.개발자는 모든 것을 처음부터 만드는 대신, 프레임워크가 제공하는 구조 안에서 비즈니스 로직에 집중할 수 있다.라이브러리라이브러리는 특정 기능을 제공하는 코드 묶음으로, 필요할 때 가져다 사용한다.차이점프레임워크프레임워크가 전체 흐름을 제어개발자는 정해진 위치에 코드만 작성예시 : React, Django, Spring Boot라이브러리내가 필요할 때 호출해서 사용제어 흐름은 개발자에게 있음프레임워크 사용 이유빠른 개발기본적인 기능이 이미 구현되어 있어 개발 속도가 빨라짐일관성 유지팀 프로젝트에서 코드 스타일 통일유지보수 용이구조가 체계적이라 기능 추가나 수정이 쉬움보..

CS 2026.01.19

[JWT] - Access Token , Refresh Token 만료

Access Token / Refresh Token 만료는 어떻게 판단할까?JWT 기반 인증을 사용하다 보면 의문점이 생긴다“엑세스 토큰이나 리프레시 토큰이 만료됐는지 어떻게 알 수 있을까?이 글에서는 실제 서비스 흐름을 기준으로 토큰 만료를 어떻게 판단하고 처리하는지 정리한다.전체 인증 흐름JWT 인증의 기본 흐름은 다음과 같다.사용자 로그인서버가 Access Token + Refresh Token 발급클라이언트는 API 요청 시 Access Token 전송서버는 Access Token 검증만료 시 Refresh Token 으로 재발급 시도Refresh Token 도 만료되면 재로그인 요구Access Token 만료Access Token 은 보통 JWT 형식이며, 내부에 만료 시간(exp) 클레임이 포..

CS 2026.01.11

[알고리즘] 에라토스테네스의 체 - 소수 찾기 알고리즘

소수 구하기소수란?소수란 1과 그 수 자신 이외의 자연수로는 나눌 수 없는 자연수 이다.소수 구하는 코드 구현다음 코드는 우리가 흔히 알고 있는 소수를 찾는 코드이다.# 1~100 사이의 소수를 구하는 파이썬 코드n=100def isPrime(a): if(a위 코드는 전혀 문제없는 코드이지만 n 의 단위가 커질수록 시간이 오래걸린다. 이처럼 시간이 오래걸리는 문제를 해결할 수 있는 방법을 알아보자.에라토스테네스의 체에라토스테네스의 체 란?고대 그리스의 수학자 에라토스테네스가 만들어 낸 소수를 찾는 방법이다.이 방법은 마치 체로 치듯이 수를 걸러낸다고 하여 ‘에라토스테네스의 체’ 라고 부른다.에라토스테네스의 체 코드 구현1~n 까지 숫자 나열1은 소수가 아니니 삭제2의 배수를 모두 삭제3의 배수를 모두 ..

CS/알고리즘 2025.12.08

[Java] - 변수

변수(Variable)란?프로그래밍을 시작하면서 가장 먼저 배우는 개념 중 하나가 바로 변수(Variable) 이다.변수는 말 그대로 변할 수 있는 값 을 저장하는 공간인데, 조금 더 이해하기 위해 상자에 비유해보겠다. 우리가 일상에서 “사과 3개” 를 기억하려면 머릿속에 숫자 3을 떠올린다.하지만 컴퓨터는 사람이 아니기 때문에, 메모리 공간에 숫자를 저장하고, 그것을 변수명 으로 관리한다.즉, 변수란 데이터를 저장하기 위해 할당 받은 메모리 공간 이고, 그 공간에 붙여진 이름인 변수명 을 통해 데이터를 읽고 수정할 수 있게 된다.변수 선언과 초기화변수 선언변수 선언은 int a 와 같이 선언한다. 위와 같이 선언하게 되면 컴퓨터의 메모리 공간을 확보해숫자 정수를 보관할 수 있는 이름이 a 라는 데이터 ..

CS/Java 2025.09.10

[CS] - 시간 복잡도, 공간 복잡도, 점근 표기법 이해하기

우리 일상에서 돈이라는 한정된 자원이 있는 것처럼, 프로그래밍에서도 한정된 자원을 갖고 합리적인 결정을 내려야 할 때가 있다.프로그래밍에서 한정된 자원이란 시간 과 공간 이다.먼저 시간은 모든 사람에게 주어진 공평한 자원이다. 개발자들은 프로그램이 최대한 빠르게 동작할 수 있도록 프로그램을 만든다.공간은 주로 컴퓨터 메모리를 뜻한다. 컴퓨터 사양 중 RAM(Random Access Memory)이 있는데, RAM 은 메모리 한도 내에서 프로그램을 동시에 실행 할 수 있다는 뜻이다.그럼 시간과 공간 중 어떤 자원이 더 중요할까?이 질문에 대한 답은 시간이 공간보다 중요하다고 할 수 있다.그 이유를 살펴보면 아래와 같다.공간은 돈을 추가로 지불하면 더 큰 메모리를 구매할 수 있지만 , 시간은 돈으로 살 수 ..

CS/알고리즘 2025.08.26