목록Spring (6)
나의 개발일기
컴포넌트 스캔(Component Scan) 스프링에서는 설정 정보(AppConfig.class) 없이 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공한다. 스프링 빈을 등록할 때는 의존관계를 자바 코드로 직접 등록하는 방법과 컴포넌트 스캔과 자동 의존관계 설정하는 @Autowired를 사용하는 방법이 있다. @ComponentScan은 탐색 위치에 @Component가 붙은 모든 클래스를 스프링 빈으로 등록한다. AutoAppConfig.Java @ComponentScan public class AutoAppConfig { } 이때 기본적으로 빈 이름은 맨 앞글자를 소문자로 바꿔 사용된다. @Component(”beanName”)과 같이 빈 이름을 직접 설정해 줄 수도 있다. 탐색범위(baseP..
웹 애플리케이션과 싱글톤 스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 웹 애플리케이션은 보통 여러 고객이 동시에 요청한다. 스프링 없는 순수한 DI 컨테이너 AppConfig의 경우 요청을 받을 때마다 객체를 새로 생성한다. 고객 트래픽이 초당 100건이 나오면 초당 100개 객체가 생성되고 소멸된다! ➡ 메모리 낭비가 심하다. 해결방안은 해당 객체가 딱 1개만 생성되고, 공유하도록 설계하면 된다. ➡ 싱글톤 패턴 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 그래서 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야한다!! private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하..
스프링 컨테이너 스프링 컨테이너는 스프링 프레임워크의 핵심 컴포넌트이다. ApplicationContext를 스프링 컨테이너라 한다. 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공한다. 스프링에서는 자바 객체를 빈(Bean)이라 한다. 즉, 스프링 컨테이너는 내부에 존재하는 빈의 생명주기를 관리(빈의 생성, 관리, 제거 등)하며, 생성된 빈에게 추가적인 기능을 제공하는 것이다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 빈(Bean) Spring에 의하여 생성되고 관리되는 자바 객체를 Bean이라고 합니다. 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다..
제어의 역전 IoC(Inversion of Control) 외부에서 객체를 만들어서 주입하는 방식 말 그대로 메서드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것을 의미 매우 느슨하고 폭넓게 사용되는 용어 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다. 의존관계 주입 DI (Dependency Injection) 애플리케이션 실행 시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것을 의존관계 주입이라 한다. 객체 인스턴스를 생성하고, 그 참조값을 전달해서 연결된다. 의존관계 주입을 사용하면 클라이언트 코드를 변경하지 않고, 클라이언트가 호출하는 대상의 ..
SOLID 좋은 객체 지향 설계의 5가지 원칙 SRP: 단일 책임 원칙(single responsibility principle) OCP: 개방-폐쇄 원칙 (Open/closed principle) LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregation principle) DIP: 의존관계 역전 원칙 (Dependency inversion principle) SRP 단일 책임 원칙 (Single responsibility principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수 있고, 작을 수 있다. • 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변..
Spring MVC구조 웹 계층 계층(layer)의 분리 Presentation Layer - Data를 보여주는 계층 (@Controller) 요청과 응답을 처리 데이터 유효성 검증 실행 흐름 제어 예외처리 Business Layer - @Service 비즈니스 로직 담당 트랜잭션 처리 예외처리 Persistence Layer(영속 계층) - Data Access Layer (DAO), @Repository -DB에서 가져오는 순수 Data Access 기능 ( DAO) 조회, 등록, 수정, 삭제 -CRUD 예외 처리 - 안 함, Service에 던짐 변경에 유리 → 인터페이스 이용 Spring MVC 패턴 관심사의 분리 Separation of Concerns(해야 할 작업) 하나의 메서드는 하나의 ..