
1. Spring framework
복잡한 XML 설정 없이 시작 가능하며 애플리케이션을 빠르고 쉽게 만들 수 있게 도와주는 프레임워크
< JSON vs XML >
| 데이터 크기 | 작음 (경량) | 큼 (태그 중복) |
| 가독성 | 높음 (간결한 구조) | 낮음 (복잡한 태그) |
| 파싱 속도 | 빠름 | 느림 |
| 데이터 검증 | 별도 로직 필요 | 스키마(DTD/XSD) 지원 |
| 확장성 | 제한적 | 네임스페이스 지원 |
| 사용 용이성 | 간편 | 복잡 |
< Spring Core >
1. IOC (Inversion of Control, 제어의 역전)
객체의 자동 생성 및 관리
2. DI (Dependency Injection, 의존성 주입)
객체 간의 의존성 자동 관리
3. AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍)
공통적으로 필요한 기능(예: 로깅, 보안 검사, 트랜잭션)을 코드에 여기 저기 반복하지 않고,
한 곳에 정의하고 여러 곳에서 사용할 수 있도록 도와주는 기능
4. Spring MVC (Model-View-Controller)
웹 어플리케이션을 쉽게 생성할 수 있도록 프레임 워크 제공
2. Spring Boot 구조
myapp/
├── src/
│ ├── main/
│ │ ├── java/com/example/myapp/
│ │ │ ├── MyApplication.java 👈 (메인 클래스)
│ │ │ ├── controller/ 👈 (웹 요청을 처리하는 클래스)
│ │ │ ├── service/ 👈 (비즈니스 로직을 처리하는 클래스)
│ │ │ ├── repository/ 👈 (데이터베이스 관련 코드)
│ │ ├── resources/
│ │ │ ├── application.properties 👈 (설정 파일)
├── pom.xml (Maven 프로젝트 설정 파일)
- MyApplication.java → 프로젝트를 실행하는 메인 클래스
- controller/ → 웹 요청을 처리하는 파일들이 들어감 (@RestController)
- service/ → 비즈니스 로직을 처리하는 클래스 (@Service)
- repository/ → 데이터베이스 관련 코드 (@Repository)
- application.properties → 설정 파일 (서버 포트, DB 정보 등)
< 스프링의 의존성 관리 & 자동 설정 >
1. @Repository: 객체 생성(재료 자동 생성)
디비에 접근하는 클래스임을 명시해주는 @
2. @Autowired: 생성한 거 줘(자동 연결)
원하는 필드에 자동으로 객체를 꽂아주는 기능
3. @SpringBootTest: springbootTestapplicationBookTests
Spring Boot Application을 테스트하는 클래스 이름
3. BEAN 등록 & 애노테이션
1. Bean이란?
Spring이 관리하는 객체(인스턴스)를 말함
클래스를 객체로 만들어서 사용하는데, spring이 자동으로 만들어서 관리하는 객체가 바로 BEAN
2. 애노테이션 Bean 등록
| 애노테이션 | 설명 |
| @Component | 가장 기본적인 Bean 등록 방법 (모든 클래스에 사용 가능) |
| @Repository | 데이터 관련 클래스를 Bean으로 등록 (DAO, DB 접근용) |
| @Service | 비즈니스 로직을 처리하는 클래스를 Bean으로 등록 |
| @Controller | 웹 요청을 처리하는 클래스를 Bean으로 등록 (Spring MVC에서 사용) |
| @Bean | Java Config 클래스에서 수동으로 빈 등록 |
| @Configuration | 자바 설정 클래스임을 명시 |
| @Scope | Bean의 스코프(lifecycle)를 설정 (singleton, prototype 등) |
3. BEAN의 생명주기 설정
@Scope : Bean의 생명 주기를 설정
@PostConstruct : Bean이 생성된 후 실행할 코드 지정
@PreDestroy : Bean이 제거되기 전에 실행할 코드 지정
4. DI (의존성 주입)
애너테이션 설명]
| @Autowired | 타입 기반으로 의존성 자동 주입 |
| @Resource(name="") | 이름 기반으로 주입 (Java 표준) |
| @Inject | 자바 제공 의존성 주입 (JSR-330) |
| @Qualifier("빈이름") | 동일 타입 Bean 여러 개일 때 특정 이름 지정 |
5. Web 계층 (Spring MVC)
| @RequestMapping("/url") | URL 매핑 (GET/POST 등 포함 가능) |
| @GetMapping, @PostMapping 등 | HTTP 메서드에 따른 매핑 |
| @RequestParam | 쿼리 파라미터 받기 (ex. ?id=1) |
| @PathVariable | URL 경로에서 값 추출 (ex. /users/{id}) |
| @ModelAttribute | 폼 데이터 → 객체로 매핑 |
| @RequestBody | JSON 등 바디 데이터를 객체로 매핑 |
| @ResponseBody | 리턴값을 그대로 HTTP 응답 본문에 출력 |
| @RestController | @Controller + @ResponseBody 조합, REST API용 |
6. 예외
| @ExceptionHandler | 특정 예외 처리 메서드 지정 |
| @ControllerAdvice | 전역 예외 처리 클래스 지정 |
4. Rest
자원을 url로 표현하고, HTTP 메서드로 행위를 지정하는 아키텍쳐
- Spring에서는 @RestController, @GetMapping, @RequestBody 등으로 구현
- DAO/ SERVICE/ CONTROLLER로 레이어를 나눔
- Client는 JSON으로 데이터를 요청 및 응답함
1. Rest, Rest API, Restful 서비스
| REST (Representational State Transfer) |
웹의 자원을 URI로 표현하고, HTTP 메서드(GET, POST 등)로 상태를 전송(Transfer)하는 아키텍처 스타일 |
| REST API | REST 규칙을 따르는 API. 클라이언트가 HTTP를 통해 요청하고 서버가 응답(JSON 등) |
| RESTful 서비스 | REST 원칙을 잘 지켜서 만든 서비스. REST API를 통해 자원 기반의 통신을 함 |
2. REST 원칙 요약
| URI는 자원을 나타냄 | 예: /books/1 (1번 책) |
| HTTP 메서드로 동작 표현 | GET 조회, POST 생성, PUT 수정, DELETE 삭제 |
| 무상태성 (Stateless) | 서버가 클라이언트 상태를 저장하지 않음 |
| JSON 형식 응답 | 대부분 JSON으로 데이터를 주고받음 |
3. RESTful 서비스 구성요소
| View | 화면(UI), 사용자와 상호작용 (예: React, Android, iOS 등) |
| Container | Spring Boot와 같은 서버 플랫폼 |
| Model | 데이터를 표현하는 객체 (DTO, Entity 등) |
| DAO (Data Access Object) | DB 접근 계층. 보통 테이블당 1개의 DAO 클래스 |
| Service | 비즈니스 로직 담당, 트랜잭션 처리 |
| Controller | URL 요청을 받고 서비스 호출, REST API 형식으로 응답 |
4. Client와의 관계
| Client | 웹, 모바일(Android/iOS), React 등 |
| Request/Response | HTTP 통신 기반. 보통 AJAX, Fetch API, Axios 사용 |
| CSR (Client Side Rendering) | 클라이언트가 페이지를 렌더링. REST API로 JSON 받아서 화면 구성 |
5. 제 1정규형
한 컬럼에 하나의 값만 저장
- 반복 컬럼 없음
- 원자성 유지(데이터를 분리해서 중복을 줄임)
'LG 유레카 2기_프론트엔드' 카테고리의 다른 글
| [ Web-Security ] XHR → Fetch API (0) | 2025.04.28 |
|---|---|
| [ Web-security ] REST & CORS & JWT (0) | 2025.04.28 |
| [ GITHUB ] Repository 설정 및 PR 실습 예제 (0) | 2025.03.12 |
| [ GITHUB ] 비전공자도 이해할 수 있는 GitHub 핵심 과정 8가지 (1) | 2025.03.11 |
| [ DB ] mybatis, Dao (1) | 2025.03.10 |