Spring 5

AOP

AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 객체 지향 프로그래밍(OOP)을 보완하는 개념으로, 프로그램의 로직을 핵심 관점과 부가 관점으로 나누어 모듈화하는 방법이다. ( 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것 )핵심 관점: 주된 비즈니스 로직부가 관점: 데이터베이스 연결, 로깅, 파일 입출력 등 핵심 로직을 보조하는 기능 AOP는 반복적으로 나타나는 코드, 즉 흩어진 관심사(Crosscutting Concerns)를 하나의 Aspect로 모듈화하여 핵심 로직에서 분리하고, 이를 재사용 가능하게 만든다. 결국, AOP는 코드의 중복을 줄이고, 관심사를 명확히 분리하여 유지보수성을 높이는 목적을 가지고 있다.

Spring 2025.07.29

스프링 빈

스프링 빈을 등록하는 2가지 방법컴포넌트 스캔과 자동 의존관계 설정자바 코드로 직접 스프링 빈 등록하기 컴포넌트 스캔을 통한 자동 의존관계 설정컴포넌트 스캔 원리@Component 애노테이션이 있으면 스프링 빈으로 자동 등록된다.@Component 를 포함하는 다음 애노테이션도 스프링 빈으로 자동 등록된다.@Controller@Service@Repository@Component 애노테이션이 있으면 스프링이 객체로 생성하여 스프링 컨테이너에 등록함.@Autowired 가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어줌.스프링은 실행파일이 위치한 패키지를 포함한 하위 파일을 뒤져서 스프링 빈을 등록한다. 따로 설정을 해주지 않는 한 기본적으로 해당 패키지 밖에서는 스프링 빈으로 컴포넌트 스캔..

Spring 2025.07.19

웹 애플리케이션 계층 구조

컨트롤러 : 웹 MVC의 컨트롤러 역할 (사용자 요청 받음)서비스 : 핵심 비즈니스 로직 구현 (사용자의 요청을 처리하기 위해 리포지토리 등을 활용)서비스 객체가 자신이 의존하는 리포지토리 객체의 구현체를 직접 생성하지 않고, 외부(설정 등)에서 전달받아 사용하는 설계 방식 = 의존성 주입(Dependency Injection)의존성 주입(DI)은 객체가 필요한 다른 객체(의존성)를 직접 생성하지 않고 외부에서 받아 사용하는 방식이다. 코드의 재사용성을 높이고 테스트하기 쉽게 만들어 준다.리포지토리 : 데이터베이스 접근(저장, 조회 등) 담당, 도메인 객체를 DB에 저장하고 관리도메인 : 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨

Spring 2025.07.18

정적 컨텐츠, MVC, API

1. 정적 컨텐츠웹 브라우저에 가공되지 않은 HTML 파일을 그대로 반환 매핑되는 컨트롤러를 먼저 찾아본 후, 없으면 static/static.html을 찾아 반환 2. MVC와 템플릿 엔진MVC: Model, View, Controller → Controller와 View를 분리하여 관심사(역할)을 분리하고 코드의 유지보수성을 높힘웹 브라우저에 처리(변환)된 동적인 HTML을 반환, 템플릿 엔진으로 내용 처리Controller : 비지니스 로직, 내부적인 것을 처리하는 것에 집중View : 화면을 그리는 데에 집중3. API웹브라우저에서 입력 데이터를 전송받고, 웹브라우저(클라이언트)에 html이 아닌 구조화된 출력 데이터(문자 또는 JSON으로 변환된 객체)를 반환@ResponseBody 문자 반환..

Spring 2025.07.17

스프링 라이브러리, thymeleaf

스프링부트 라이브러리 Gradle은 의존 관계가 있는 라이브러리를 함께 다운로드 한다. (의존성 관리 및 빌드 자동화)→ External Libraries 또는 Gradle 에서 확인 가능 spring-boot-starter-webspring-boot-starter-tomcat : 톰캣 (내장 웹 서버)spring-webmvc : 스프링 웹 MVCspring-boot-starter-thymeleaf : 타임리프 템플릿 엔진(View)spring-boot-starter(공통) : 스프링 부트 + 스프링 코어 + 로깅관련 라이브러리 자동 포함 및 설정 → 호환성 걱정 없이 필요한 기능을 쉽게 추가 가능spring-bootspring-corespring-boot-starter-logging : system.p..

Spring 2025.07.16