본문 바로가기
코딩도전기/Spring

Spring 교육

by 코도꼬마 2024. 1. 18.

web.xml에 spring 설정 추가하여 spring 구조로 실행


spring 주요 디자인 패턴

Front Controller Pattern
- 사용자 요청이 들어왔을 때 하나의 컨트롤러가 관문역할을 하고 해당 요청을 처리할 수 있는 서블릿이나 페이지로 분배하는 패턴
- 요청 처리의 일관성과 효율성을 높임

Transfer Object Pattern
- 데이터를 한 객체에서 다른 객체로 전송하는 데 사용
- 데이터베이스와 같은 소스로부터 데이터를 검색하고 전달하는 데 활용

Data Access Object Pattern
- 비즈니스 로직과 DB 분리
- DB 사용 방식이 달라져도 서비스 로직이 변경되지 않도록 DB 로직을 캡슐화하여 분리 

Session Facade Pattern
- 다양한 서브 클래스들을 단일 인터페이스로 간소화하는 패턴


Ioc (Inversion of Control)  : 제어의 역전
- 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정하도록 하는 것

DI (Dependency Injection) : 의존성 주입
- 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식
- 의존적인 객체를 직접 생성하거나 제어하는 것이 아니라, 특정 객체에 필요한 객체를 외부에서 결정해서 연결

AOP (Aspect Oriented Programming) : 관점 지향 프로그래밍
- 핵심적 관점, 부가적 관점을 나누어 관점을 기준으로 모듈화하는 것
- 흩어진 관심사(Crosscutting Concerns)를 모듈화 할 수 있는 프로그래밍 기법
- 흩어진 관심사 : 중복되는 메서드, 필드, 코드 등


spring의 전체 구조는 전략패턴으로 형성되어 있음
- 각 티어의 의존성을 끊음
- 각 레이어 마다 추상화 시켜서 사용 

전략패턴
- 실행(런타임) 중에 요청에 따라 객체 동작을 동적으로 실행할 수 있도록 하는 행위 디자인 패턴


Proxy
전/후 처리가 필요한 레이어의 proxy 객체 생성하여 전처리(pre-handle) 후 해당 객체 실행 후 후처리(post-handle) 실행
aop 위치 - service 실행 전후


전자정부프레임워크 규칙
- controller/service에 @Controller/@Service 붙이기
- DAO에 @Repository 붙이기

@Repository  
- 해당 클래스가 데이터 접근 계층의 구현체임을 명시

@Resource 
- Bean 이름으로 주입할 Bean 객체 찾아서 주입
- 어노테이션 붙여놓은 객체를 설정해 놓은 이름으로 생성해줌(DI)
- @autowired와의 차이
- @autowired
- 의존 객체 자동 주입(Automatic Dependency Injection) 
- 스프링 설정파일 또는 태그로 의존 객체 대상을 명시하지 않아도 스프링 컨테이너가 타입이나 이름을 비교하여 자동적으로 의존 대상 객체를 찾아 의존성을 주입하는 것


spring 디렉토리 구조
src
ㄴ main
ㄴ java - java 소스 파일
ㄴ resources - xml 파일(스프링 설정파일), properties 파일 (빌드 시 하위 contents들이 classes 위치에 저장됨)
ㄴ wepapp
ㄴ WEP-INF 
ㄴ jsp - view 파일 
ㄴ lib - library 파일


maven
- 자바용 프로젝트 관리도구
- 필요한 라이브러리를 pom.xml에 정의해 놓으면 해당 라이브러리가 작동하는데 필요한 라이브러리들을 네트워크를 통해서 자동으로 다운받아 관리
- 빌드 시 target의 lib 위치에 라이브러리 저장

'코딩도전기 > Spring' 카테고리의 다른 글

Transaction  (0) 2023.12.30
AOP - Proxy Pattern  (1) 2023.12.30
CODO Day46_Spring(Paging)  (0) 2023.04.07
CODO Day45_Spring(AJAX)  (0) 2023.04.05
CODO Day44_Spring(PhotoBoard)  (0) 2023.04.04