일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 1일 1쿼리
- ?. ?? ! late
- flutter 믹스인
- 주말도 식지않아
- 주말도 한다
- 앱개발 가보자고
- 오늘은 1일 2쿼리
- null 억제 연산자
- null 병합 연산자
- SQL
- 2일차
- null check 연산자
- LinkedList
- null safety
- MySQL
- mysql mongo 성능 비교
- 컴포지션과 집합
- jmeter
- 추상클래스
- my_sql
- FLUTTER
- 비동기 처리
- dart
- array
- 콜백 함수
- 배열과 리스트
- late 키워드
- 주말에도 1일 1쿼리
- rdbms nosql 차이
- 다중상속
- Today
- Total
subindev 님의 블로그
Spring #1 본문
1. WAS (Web Application Server)에 대해 설명해 보세요.
WAS는 Web Application Server의 약자로, 웹 애플리케이션을 호스팅하고 클라이언트의 요청에 따라 동적인 웹 페이지를 생성하거나 비즈니스 로직을 처리하는 서버입니다.
- 주요 기능: 동적 콘텐츠 처리, 비즈니스 로직 실행, 웹 서버와의 연동, 세션 관리, 데이터베이스 연결, 보안 기능 제공 등
- 예를 들어 Apache Tomcat은 서블릿과 JSP를 실행할 수 있는 WAS이고, IBM WebSphere, Red Hat JBoss 등은 엔터프라이즈급 WAS로, 더 많은 기능과 확장성을 제공합니다.
2. 서블릿(Servlet)에 대해 설명해 보세요.
서블릿은 Java를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 프로그램입니다. 서블릿은 HTTP 요청을 처리하고 응답을 생성하는 역할을 합니다.
- 주요 특징:서블릿은 웹 서버와 함께 작동하는 웹 컨테이너(예: Tomcat) 내에서 실행되며, 클라이언트의 요청을 받아서 적절한 응답을 반환합니다.
- 생명주기 관리: 서블릿 컨테이너가 서블릿 객체의 생성, 초기화, 서비스, 소멸 등을 관리합니다.
- HTTP 요청 처리: 서블릿은 doGet(), doPost() 메서드를 통해 클라이언트의 HTTP 요청을 처리합니다.
- 스레드 기반 처리: 서블릿은 멀티스레드를 사용하여 여러 요청을 동시에 처리합니다.
- 상태 비저장 (Stateless): HTTP 프로토콜의 특성상 요청 간에 상태를 저장하지 않으며, 세션 관리를 통해 상태를 추적할 수 있습니다.
3. Spring Boot란?
Spring은 자바 기반의 웹 애플리케이션 개발을 위한 강력한 프레임워크입니다. 하지만 Spring Boot는 Spring을 더 쉽고 빠르게 사용할 수 있도록 도와주는 경량화된 프레임워크입니다.
- Spring Boot의 주요 특징:
- 자동 설정 (Auto-Configuration): 개발자가 별도로 설정하지 않아도, Spring Boot가 대부분의 설정을 자동으로 처리합니다.
- 내장 서버 (Embedded Server): Tomcat, Jetty 등 내장 서버를 제공하여, 별도의 서버 설정 없이 애플리케이션을 실행할 수 있습니다.
- 배포 용이성: 복잡한 설정 없이 standalone 애플리케이션 형태로 실행할 수 있어 배포가 간편합니다.
4. IoC (Inversion of Control)에 대해 설명해 주세요.
IoC는 제어의 역전이라는 의미로, 객체의 생명주기를 개발자가 아니라 IoC 컨테이너가 관리하게 되는 개념입니다.
- 예시: 개발자가 직접 객체를 생성하는 것이 아니라, Spring IoC 컨테이너가 관리하는 빈(bean) 객체를 주입받아 사용하는 방식입니다.
- IoC 컨테이너는 객체를 싱글톤 패턴으로 관리하며, 애플리케이션의 객체들을 생성하고, 관리하고, 의존성을 주입합니다.
- 장점: 개발자는 객체의 생성과 관리에 대한 제어를 맡지 않고, 로직에만 집중할 수 있습니다.
5. DI (Dependency Injection)에 대해 설명해 주세요.
DI는 의존성 주입을 의미합니다. 객체가 자신이 사용할 객체를 직접 생성하지 않고, IoC 컨테이너에서 관리하는 객체를 주입받아 사용하는 방식입니다.
- DI의 주요 특징:
- Autowiring: @Autowired 어노테이션을 통해 Spring IoC 컨테이너에서 자동으로 빈을 주입받습니다.
- 세 가지 주입 방법:
- 생성자 주입: 클래스의 생성자를 통해 의존성 객체를 주입.
- 세터 주입: 세터 메서드를 통해 의존성 객체를 주입.
- 필드 주입: 클래스의 필드에 직접 의존성 객체를 주입.
- 장점: 객체 간의 의존성을 명확하게 분리하고, 유지보수성을 높일 수 있습니다.
6. REST API에 대해 설명해 주세요.
REST API는 Representational State Transfer의 약자로, HTTP 프로토콜을 사용하여 자원에 접근하고 조작하는 시스템입니다.
- 주요 HTTP 메서드:
- GET: 자원의 조회
- POST: 자원의 생성
- PUT: 자원의 전체 수정
- PATCH: 자원의 부분 수정
- DELETE: 자원의 삭제
- 장점: 간단하고 직관적인 방식으로, 상태를 유지하지 않으며 (Stateless) 클라이언트-서버 구조를 기반으로 동작합니다.
7. MVC 패턴에 대해 설명해 주세요.
MVC는 Model-View-Controller 패턴으로, 사용자 인터페이스와 비즈니스 로직을 분리하여 관리하는 디자인 패턴입니다.
- 구성:이 패턴을 사용하면 애플리케이션의 유지보수와 확장성이 향상됩니다.
- Model: 데이터와 비즈니스 로직을 처리하는 계층.
- View: 사용자에게 보여지는 UI (예: HTML, JSP, Thymeleaf).
- Controller: 사용자 요청을 처리하고, Model과 View를 연결하는 역할.
8. AOP에 대해 설명해 주세요.
AOP는 Aspect-Oriented Programming으로, 관심사 분리를 통해 핵심 로직과 부가적인 기능을 분리하여 관리하는 프로그래밍 기법입니다.
- 핵심 로직: 애플리케이션의 핵심 기능.
- 부가 기능: 로그, 트랜잭션 처리 등.
- AOP를 사용하면 코드의 중복을 줄이고, 비즈니스 로직을 깨끗하게 유지할 수 있습니다.
9. 인터셉터와 필터, AOP의 차이점에 대해 설명해 주세요.
- 필터:
- WAS에서 동작하며, 스프링과 무관하게 요청을 가로채서 처리합니다.
- 주로 보안, 로깅, 데이터 압축 등 전역적인 작업을 처리합니다.
- 인터셉터:
- 스프링 컨테이너에서 동작하며, 요청과 응답을 가로채고 컨트롤러 전후에 작업을 처리합니다.
- 주로 사용자 인증/권한 체크 등 스프링 애플리케이션 내에서 사용됩니다.
- AOP:
- 관점 지향 프로그래밍을 통해 비즈니스 로직의 분리와 부가적인 기능을 제공하며, 어노테이션 등을 기반으로 특정 기능을 적용합니다.
10. AJAX 통신에 대해 설명해 주세요.
AJAX(Asynchronous JavaScript and XML)는 자바스크립트를 이용해 비동기적으로 서버와 데이터를 주고받는 기술입니다.
- 장점: 웹 페이지 전체를 새로고침하지 않고 필요한 데이터만 요청하여 화면을 갱신할 수 있습니다.
- CSR(Client-Side Rendering)와 연계하여, 클라이언트 측에서 페이지를 동적으로 렌더링할 수 있습니다.
11. JSON에 대해 설명해 주세요.
JSON(JavaScript Object Notation)은 키-값 쌍 형태로 데이터를 표현하는 경량 데이터 포맷입니다.
- 장점: 자바스크립트 객체와 구조가 유사하여, 웹 애플리케이션에서 쉽게 다룰 수 있습니다.
12. 템플릿 엔진에 대해 설명해 보세요.
템플릿 엔진은 템플릿 양식과 데이터를 합쳐서 HTML 문서를 생성하는 소프트웨어입니다.
- 예시: JSP(Java Server Pages), Thymeleaf.
- JSP는 자바 서버 페이지로, HTML 코드에 자바 코드를 삽입하여 동적 웹 페이지를 생성합니다.
13. CSR과 SSR의 차이에 대해 설명해 주세요.
- SSR(Server-Side Rendering): 서버에서 모든 렌더링을 처리하고, 렌더링된 HTML을 클라이언트에 전달합니다.
- CSR(Client-Side Rendering): 클라이언트에서 렌더링을 처리하고, 서버는 주로 데이터를 제공만 합니다.
14. Bean 객체에 대한 설명과 작동 방식
Spring IoC 컨테이너가 관리하는 객체를 Bean 객체라고 부릅니다.
- Bean 객체는 싱글톤 패턴으로 관리되며, **DI(Dependency Injection)**를 통해 다른 객체에 주입됩니다.
15. 디스패쳐 서블릿이란?
디스패쳐 서블릿은 스프링의 프론트 컨트롤러로, 클라이언트의 요청을 받아 적절한 컨트롤러로 요청을 위임합니다.
- 모든 요청은 디스패쳐 서블릿을 통해 흐르고, 이후 요청을 핸들러 매핑과 핸들러 어댑터를 통해 처리합니다.
16. Advice 어노테이션
Advice는 AOP에서 부가적인 기능을 수행하는 코드 조각을 정의합니다. 예를 들어 예외 처리를 담당하는 클래스에 붙여서 특정 메서드 실행 전후에 동작하도록 할 수 있습니다.