반응형 public void static main/Book33 [토비의스프링] 9장-스프링 프로젝트 시작하기 1. 스프링의 기본 특징플랫폼 호환성: 스프링은 다양한 플랫폼에서 사용 가능하지만, **자바 엔터프라이즈 플랫폼(Java EE)**에 최적화되어 있습니다.주요 사용 사례:웹 클라이언트: HTTP를 통해 접근하는 웹 애플리케이션.백엔드 DB 연동: 데이터베이스와 상호작용하는 애플리케이션에 적합.핵심 목표: 의존성 주입(Dependency Injection)과 제어의 역전(Inversion of Control, IoC)을 통해 유연하고 확장 가능한 애플리케이션 개발 지원.2. 스프링 개발 생산성과 품질 향상을 위한 도구필요성: 스프링 개발의 생산성과 품질을 높이기 위해서는 적절한 도구가 필수적.권장 도구:SpringIDE 플러그인: Eclipse 같은 IDE에 통합 가능한 플러그인으로 스프링 설정 및 빈(B.. 2025. 2. 28. [토비의스프링] 8장-스프링이란 무엇인가? 🌸 스프링의 철학과 목표 깊이 파헤치기✨ 스프링의 본질 한눈에 보기철학: 자바의 객체지향 원리를 살려 복잡성을 단순화.목표: POJO 기반으로 엔터프라이즈 개발을 쉽게.특징: 오픈소스, 모든 개발 영역을 아우르는 프레임워크.해결: 비즈니스와 기술적 요구의 충돌을 해소.🛠️ 스프링을 이해하는 핵심 포인트1️⃣ 스프링이란?정의:오픈소스 소프트웨어: 전 세계 개발자가 기여하며 발전.애플리케이션 프레임워크: 웹, DB, 배치 등 모든 기술을 통합 지원.상세 설명:단순한 라이브러리가 아니라, 애플리케이션 전체를 설계하고 실행할 수 있는 기반 제공.예: 스프링 부트는 설정을 최소화해 개발 속도를 높임.역할: 자바 개발자가 엔터프라이즈 시스템을 만들 때 필수적인 도구와 구조 제공.2️⃣ 엔터프라이즈 개발의 복잡성.. 2025. 2. 28. [토비의스프링] 7장-스프링 핵심 기술의 응용 🌟 DI와 스프링으로 더 나은 코드 설계하기✨ 핵심 개념 한눈에 보기DI의 힘: 객체 연결을 유연하게, 코드 설계를 깔끔하게.스프링의 도구: 반복 작업 줄이고 생산성 높임.목표: 변경에 강하고 유지보수 쉬운 코드 만들기.철학: 객체지향 설계를 실현하는 기반 제공.🛠️ 설계 단계별 상세 정리1️⃣ 변경 가능한 데이터 외부화왜 필요한가?:SQL, 설정값 같은 텍스트 데이터가 코드에 섞이면 수정할 때마다 컴파일 필요 → 비효율적.어떻게 하나?:외부 리소스 사용: .sql 파일, .properties, DB 테이블에 저장.가져오기: 런타임에 동적으로 로드.구체적 예시:SQL 쿼리를 queries.sql 파일에 저장 → SqlLoader 클래스로 읽기.@Value("${db.query}")로 .properti.. 2025. 2. 28. [토비의스프링] 6장-AOP 트랜잭션과 DI/AOP로 깔끔한 코드 만들기핵심 개념 한눈에 보기트랜잭션 분리: 비즈니스 로직과 환경 의존 코드를 분리해 책임을 명확히 한다.DI(의존성 주입): 객체 간 유연한 연결로 코드 변경을 최소화한다.AOP: 트랜잭션 같은 공통 기능을 모듈화해 관리한다.프록시: 비즈니스 로직에 부가 기능을 추가하는 중개자 역할.테스트: 로직과 환경이 분리되어 단위 테스트가 쉬워진다.트랜잭션 설계 단계별 정리트랜잭션 코드 분리왜?: 비즈니스 로직과 트랜잭션 처리(시작, 커밋, 롤백)를 분리하면 책임이 명확해진다.어떻게?:트랜잭션 처리를 전담하는 별도 클래스를 만든다.비즈니스 로직과 동일한 인터페이스를 구현한다.DI를 통해 클라이언트 코드 수정 없이 트랜잭션 기능을 추가한다.분리의 장점비즈니스 로직이 외부 리소스(.. 2025. 2. 26. [토비의스프링] 5장-서비스 추상화 DAO와 트랜잭션 관리: 결합도 낮추고 단일 책임 원칙 지키기1. DAO와 서비스 계층의 결합도 낮추기DAO(Data Access Object)는 데이터베이스와의 상호작용을 담당하지만, 기술 변화(예: JDBC → Hibernate)가 생기면 서비스 계층 코드에도 영향을 줄 수 있습니다. 이를 방지하려면:인터페이스 활용: DAO에 인터페이스를 정의해 구현체를 분리.DI(의존성 주입): Spring 같은 DI 프레임워크를 사용해 DAO 구현체를 동적으로 주입.결과: 서비스 계층은 DAO의 구체적인 기술에 의존하지 않게 되어 결합도가 낮아짐.2. 트랜잭션과 비즈니스 로직트랜잭션 필요성: DAO를 사용하는 비즈니스 로직은 데이터 무결성을 보장하기 위해 단위 작업(트랜잭션)이 필요.트랜잭션 경계설정: 트랜잭션의.. 2025. 2. 21. [토비의스프링] 3장-템플릿 3장에 나오는 개념을 가볍게 정리하였다. 템플릿 패턴코드에서 변경이 거의 일어나지 않으며 일정한 패턴을 유지하는 부분(고정적인 부분) 을 자유롭게 변경되는 부분(가변적인 부분) 으로부터 독립시켜 효과적으로 활용하는 방법이다.템플릿 패턴을 활용하면 공통 로직을 재사용할 수 있으며, 중복 코드를 줄이고 유지보수성을 높일 수 있다.템플릿 패턴과 관련된 개념로컬 클래스 (Local Class)특정 메서드 내부에서만 사용되는 중첩 클래스.외부 클래스의 변수를 접근할 수 있다.중첩 클래스 (Nested Class)클래스 내부에 정의된 클래스로, 외부 클래스와 논리적으로 강한 관계를 가지는 경우 사용된다.정적 중첩 클래스(Static Nested Class)와 인스턴스 중첩 클래스(Inner Class)로 나뉜다... 2025. 2. 21. [토비의스프링] 2장-테스트 으아아아ㅏㅏ 한장 한장 내용이 너무많아...... 테스트란?테스트란 결국 내가 예상하고 의도했던 대로 코드가 정확히 동작하는지를 확인해서, 만든 코드를 확신할 수 있게 해주는 작업이다. 또한 테스트의 결과가 원하는 대로 나오지 않는 경우에는 코드나 설계에 결함이 있음을 알 수 있다. 이를 통해 코드의 결함을 제거해가는 작업, 일명 디버깅을 거치게 되고, 결국 최종적으로 테스트가 성공하면 모든 결함이 제거됐다는 확인을 얻을 수 있다.코드의 정확성을 보장하여 신뢰도를 높인다.설계 및 코드의 결함을 조기에 발견하여 유지보수 비용을 절감할 수 있다.코드 변경(리팩토링) 시 기존 기능이 정상적으로 동작하는지 검증할 수 있다.테스트 실패시코드 자체의 버그잘못된 요구 사항 정의예상과 다른 실행 결과작은 단위의 테스트.. 2025. 1. 29. [Elasticsearch Bible] 1장 소개 ~ 2장 동작과 구조 프로젝트를 하려면 elasticsearch에 대해서 얼추 아는게 아니라 정확히 알고있어야 하지 않겠어?Elasticsearch?검색 엔진단순 텍스트 매칭 검색이 아닌 전문 검색(full-text search)이 가능하고 다양한 종류의 검색 쿼리를 지원한다.검색 엔진이기 때문에 역색인을 사용하여 검색 속도도 매우 빠르다.분산처리데이터를 여러 노드에 분산 저장하며 검색이나 집계 작업 등을 수행할 때도 분산 처리를 지원한다.고가용성 제공클러스터를 구성하고 있는 일부 노드에 장애가 발생해도 복제본 데이터를 이용해 중단 없이 서비스를 지속할 수 있다.엘라스틱서치는 다시 복제본을 만들어 복제본의 개수를 유지하면서 노드 간 데이터의 균형을 자동으로 맞춘다.수평적 확장성새로운 노드에 엘라스틱서치를 설치하여 클러스터에 .. 2025. 1. 29. [토비의스프링] 1장-오브젝트와 의존관계 와 1장부터 진짜 내용이 너무 많아서 힘들었다......... 책에서 나온 개념들을 쭉 정리해보았다...스프링 프레임 워크스프링 프레임워크는 다양한 엔터프라이즈 애플리케이션을 개발하는 데 필요한 여러 기능을 제공하는 오픈소스 프레임워크이다.IoC, AOP, 트랜잭션 관리, 메시징 등을 지원하여 애플리케이션 개발을 더욱 효율적으로 만들어 준다.빈(bean)스프링에서 빈(bean)은 IoC 컨테이너가 관리하는 객체를 의미한다. 빈은 스프링이 자동으로 생성하고 관리하는 객체로, 종속성 주입(DI) 방식으로 다른 객체에 의존성을 주입하거나, 특정 역할을 담당하는 객체로 사용된다. 스프링의 핵심 기능 중 하나는 객체를 IoC(제어의 역전) 방식으로 관리한다는 점이다. 객체간의 관계를 설정하고, 객체 생명주기 등을.. 2025. 1. 28. 이전 1 2 3 4 다음 반응형