목록전체 글 (36)
kimgusxo 님의 블로그

1. AOP란?."관점 지향 프로그래밍"으로 핵심 로직 외의 반복되는 부가 기능(cross cutting concerns)을 공통된 영역(aspect)으로 분리해서 관리하는 프로그래밍 패러다임이다.로그 남기기, 트랜잭션 처리, 시간 측정 등에 사용된다. 1-1. 기존 방식 문제점public class MemberService { public void join(Member member) { long start = System.currentTimeMillis(); try { repository.save(member); } finally { long end = System.currentTimeMillis(); ..

1. 빈의 생명주기란?스프링에서는 객체의 생성 -> 의존성 주입 -> 초기화 -> 사용 -> 소멸의 흐름을 자동으로 처리한다.하지만 빈 내부에서 자원 초기화(DB 커넥션 열기), 종료 처리(커넥션 닫기) 등을 직접 다뤄야 할 때가 있다.그때 필요한 것이 바로 스프링 빈 생명주기 콜백이다. 2. 스프링 빈 생명주기 전체 흐름빈 클래스 탐색: @ComponentScan 또는 @Bean 메소드로 등록인스턴스 생성: 기본 생성자 또는 생정자 주입 방식으로 객체 생성의존성 주입: @Autowired, 생성자/필드/세터 방식초기화 콜백: @PostConstruct, InitializingBean.afterPropertiesSet()소멸 콜백: @PreDestory, DisposableBean.destroy() 3...
1. 빈(Bean)이란?스프링 컨테이너가 생성하고 관리하는 객체즉, 단순히 자바 객체지만 스프링이 책임지고 만들고 관리해주는 객체를 "빈"이라 한다.빈은 싱글톤 패턴을 가지며 thread-safe하게 설계되어야된다.@Componentpublic class MyService {}위 클래스는 컴포넌트 스캔을 통해 스프링 컨테이너가 자동으로 객체를 생성MyService클래스는 ApplicationContext 내부에서 등록된 빈으로 관리된다. 2. 컴포넌트 스캔(ComponentScan)이란?스프링은 객체를 직접 생성하지 않아도 되도록 컨테이너가 대신 관리해주는 프레임워크이다.즉, 이 "관리"의 출발점이 클래스를 탐색하고 등록하는 것이다. 2-1. 컴포넌트 스캔의 동작방식@SpringBootApplicatio..
1. 객체지향 프로그래밍1-1. 객체지향의 핵심 원칙 중 하나: 높은 응집도, 낮은 결합도응집도: 각 클래스가 자신의 역할에 충실한가?결합도: 서로 얼마나 밀접하게 연결되어 있는가?// 높은 결합도 예시public class OrderService { private final PaymentService paymentService = new PaymentService();}OrderService는 항상 PaymentService에 종속됨테스트가 어렵고 구현체 변경이 어려운 문제가 발생 2. 제어의 역전(IoC)의 등장IoC(Inversion of Control)란 객체 생성과 의존성 연결을 개발자가 아니라 프레임워크(컨테이너)가 대신 처리하는 것즉 "제어의 주체가 뒤바뀐다" 2-1. 기존 구조Orde..