전체 글 40

Loosely coupled vs Tightly-coupled

Loosely coupled, Tightly-coupled 방식은 소프트웨어 컴포넌트들 간의 의존성(dependency) 정도를 설명하는 용어이다. 코드나 시스템의 유연성과 유지보수성에 직결되는 개념이다. Tightly-copled (강결합)- 한 모듈, 클래스가 다른 모듈, 클래스의 구체적인 구현(implementation)에 강하게 의존하는 상태- 코드 변경시 다른 모듈도 영향을 크게 받음- 재사용성이 낮음- 테스트하기 어렵고 확장이 힘들다.- 예시) Car는 Engine의 구체적인 구현에 직접 의존 -> Engine 바꾸려면 Car 코드도 수정해야 됨. Loosely Coupled (약결합)- 한 모듈, 클래스가 다른 모듈의 구체적인 구현 대신 인터페이스나 추상화에 의존하는 상태- 코드 변경 영향이..

스프링에서 Bean은 어떻게 등록되고 주입될까? (XML & Annotation 비교)

1. 기본 개념스프링에서 DI(의존성 주입)는 **“필요한 객체를 직접 new 해서 쓰지 않고, 외부에서 넣어준다”**는 거예요.DI 방식은 크게 3가지가 있어요:필드 주입 → @Autowired private EmpDAO dao;Setter 주입 → setEmpDAO(EmpDAO dao) 같은 setter로 주입생성자 주입 → public EmpServiceImpl(EmpDAO dao) { this.dao = dao; }2. 생성자 주입 방식의 원리당신이 적으신 코드:public class EmpServiceImpl implements EmpService { private EmpDAO dao; public EmpServiceImpl(EmpDAO dao) { this.dao = d..

GoF 패턴 - singleton 싱글톤 패턴 / 스프링에서 싱글톤 패턴 만들어보기

뭐임?- Singleton : 특정 클래스의 인스턴스가 오직 하나만 만들어지고, 그 인스턴스에 전역적으로 접근할 수 있도록 하는 패턴- 즉, 프로그램 전체에서 공유되는 단일 객체이다.- 단 하나의 객체로서 클라이언트의 요청을 처리함 왜씀?- 메모리 절약(객체 여러번 생성 X) / 데이터 일관성 유지 / 객체 관리 단순화 동작 방식?- 생성자를 private 으로 막아 외부에서 new 키워드로 인스턴스를 만들지 못하게 함.- 클래스 내부에서 자기 자신을 static 변수로 하나 생성해 둠.- getInstance() 같은 static 메서드를 통해 단일 객체에 접근함. - : private+ : public밑줄 : static 스프링에서 싱글톤 만들어보기ApplicationContext (스프링 컨테..

카테고리 없음 2025.09.02

[JDBC 커넥션 풀] DBCP2 vs hikariCP vs c3p0

서버와 DB 연결 방식1. 요청마다 새 커넥션 맺는 방법2. 커넥션 풀링 : 서버가 미리 DB와 연결해놓고 연결해놓은 커넥션을 하나씩 맺어주는 방법 커넥션 풀- 웹서버에서 DB를 사용하기 위해 DB를 연결해놓은 커넥션들을 저장해놓은 장소- 서버 시작시 DB와 미리 일정 개수의 연결을 확보해 둠. -> 요청이 들어오면 풀에 있는 커넥션 하나 빌려줌. -> 작업 끝나면 커넥션 닫지 않고 반환 -> 다시 풀에 보관 왜쓰냐?성능, 안정성, 비용 때문에 DataSource (JDBC)- "DB 커넥션을 어떻게 얻어올까?" 라는 계약(규칙)만 정의하고, 실제 구현은 여러 방식이 가능함.- JDBC에서는 커넥션 풀을 직접 만들지 않고, DataSource라는 인터페이스를 제공해 추상화함. -> 각 풀 라이브러리가 D..

Spring-DI-Bean Annotation

============================================================================================ EmpServiceImpl.java에서 @어노티이션 추가 resources의 spring-context.xml의 xsi:schemaLocation에 아래 코드 추가http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd" 아래코드도 추가해야됨.xmlns:context="http://www.springframework.org/schema/context" EmpMainSpring.java 에서 실행하면..

Spring - DI - Bean Annotation / 커스텀 어노테이션 만들어보기

Annotation은 Annotation이다.변수, 함수, 클래스, 프레임워크, 패키지는 아니다.주로 Annotation은 마킹용도로 사용한다. 코드사이에 특별한 의미, 기능을 수행하도록 하는 기술프로그램 코드의 일부가 아니라 프로그램에 대한 관한 데이터를 제공하고, 코드에 정보를 추가하는 정형화된 방법- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보 제공- 소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공- 실행시(런타임시) 특정 기능을 실행하도록 정보 제공자바코드에 대한 메타데이터를 제공하는 문법요소컴파일러, 런타임, 프레임워크(Spring 등)에 의해 특정 동작을 유발하거나 정보를 제공@ 기호로 시작하며, 클래스 메서드 필드 등에 붙여서 정보를 부여함 사용하기 위..

변수 vs 객체 / stack vs heap

저장 위치 : Stack 영역용도 : 참조변수 저장 (객체의 주소값 저장)특징 : 메서드 종료시 자동 소멸크기 : 32비트 또는 64비트 (JVM에 따라 다름)stack 영역에 (32, 64비트)를 할당받아서 product라는 이름으로 참조하게 되며 객체의 주소값을 저장할 수 있다. heap 영역저장위치 : Heap 영역용도 : 실제 데이터(속성, 메서드)를 담는 실체특징 : new 키워드를 통해 생성되고, GC가 관리크기 : 동적으로 결정됨 (필드 수와 타입에 따라 달라짐)1. 객체 생성2. 생성된 객체의 주소값을 stack 영역에 기입

Spring - DI - Container

-- DIDependency 의존 : 하나의 클래스에서 기능이 수행될 때, 다른 클래스나 컴포넌트를 사용(의존)함을 의미Injection 주입 : 하나의 클래스에서 다른 클래스나 컴포넌트를 사용할 수 있도록 설정함 (Spring은 컨테이너가 의존주입 함.) -- 사용하기 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------..

java - MyBatis

1. 뭐임?- 자바 Persistence 프레임워크 (xml이나 어노테이션으로 SQL문을 기술- 데이터베이스를 쉽게 다룰 수 있도록 도와주는 오픈소스 프레임워크- 데이터베이스 쿼리, 프로그래밍 언어 코드 -> 두 개를 분리하여 유지보수성과 생산성 높높 2. 왜씀?- MyBatis를 사용하면 db를 쉽게 다룰 수 있음- preparedStatement 등 쿼리문 복잡하게 입력 안하고 실제 쿼리문과 유사하게 작성 가능- 동적 쿼리 작성 가능- 캐시 기능을 제공해 데이터베이스 연산속도를 높일 수 있음 등등등 3. 사용 순서의존성 설정 -> db 설정 -> MyBatis 설정 -> Mapper 인터페이스 작성 -> XML 작성 -> MyBatis사용1) 스프링 프로젝트 생성 후 필요한 의존성 추가 (sprin..

Session, Cookie, Cache

1. 쿠키가 뭐임 - 브라우저에 저장되는 작은 데이터 - 정의서버가 브라우저에 심어두는 작은 데이터 (key-value쌍)인증(로그인 유지)뿐만 아니라 언어설정 같은 사용자 환경설정도 저장클라이언트 개인장치(브라우저)에 저장됨 - 예시팝업창 안뜨게 / 아이디, 비번 저장 / 장바구니 - 왜씀?웹사이트의 기본 기능 활성화 (탐색, 로그인 유지, 보안 영역 접근 등)사용자 맞춤 환경 제공 (언어, 지역 등 설정 유지)방문자 행동 분석 (익명 수집, 보고를 통해 웹사이트 운영자가 방문자와 웹사이트 사이의 상호작용 이해 도움ㄱㄱ) - 특징자동 전송 (사용자가 따로 처리 안해도 HTTP가 요청시 Header에 실림.)도메인, 경로 제한 (A사이트 쿠키는 A에만 전송)유효기간 존재 (Session Cookie, P..