Web/Spring 26

[스프링 MVC 2편 - 백엔드 웹 개발 활용 기술] 01. 타임리프 기본기능

1. 타임리프 특징① 서버 사이드 HTML 렌더링 (SSR)- 타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다. ② 네츄럴 템플릿- 타임리프는 순수 HTML을 최대한 유지하는 특징이 있다.- 타임리프로 작성한 파일은 HTML을 유지하기 때문에 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있다. ③ 스프링 통합 지원- 타임리프는 스프링과 자연스럽게 통합되고, 스프링의 다양한 기능을 편리하게 사용할 수 있게 지원한다. 2. 텍스트 - text, utext @GetMapping("/text-basic") public String textBasic(Model model) { mod..

Web/Spring 2025.03.01

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 07. 웹 페이지 만들기

1. 상품 도메인 개발@Getter@Setter //@Data보단 필요한 애노테이션만 쓰는 것이 안전함public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item() { } public Item(String itemName, Integer price, Integer quantity) { this.itemName = itemName; this.price = price; this.quantity = quantity; }}@Repositorypublic class ItemR..

Web/Spring 2025.02.19

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 06. 스프링 MVC 기본 기능

1. 로깅운영 시스템에서는 System.out.println()같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다.로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 바로 SLF4J 라이브러리다.쉽게 이야기해서 SLF4J는 인터페이스이고, 그 구현체로 Logback 같은 로그 라이브러리를 선택하면 된다.실무에서는 스프링 부트가 기본으로 제공하는 Logback을 대부분 사용한다.@Slf4j@RestControllerpublic class LogTestController { //@Slf4j과 동치 //private final Logger log = Logg..

Web/Spring 2025.02.17

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 05. 스프링 MVC 구조 이해

1. 스프링 MVC 전체 구조- 스프링 MVC의 프론트 컨트롤러는 디스패처 서블릿(DispatcherServlet)이다.- DispatcherServlet은 부모 클래스에서 HttpServlet을 상속 받아서 사용하고, 서블릿으로 동작한다.- 스프링 부트는 DispatcherServlet을 서블릿으로 자동으로 등록하면서 모든 경로(urlPatterns="/")에 대해서 매핑한다.- 스프링 MVC의 큰 강점은 DispatcherServlet코드의 변경 없이, 원하는 기능을 변경하거나 확장할 수 있다는 점이다. 동작순서핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다.핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다.핸들러 어댑터 실행: 핸들러 어댑터를..

Web/Spring 2025.02.13

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 04. MVC 프레임워크 만들기

1. FrontController 패턴- 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음- 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출- 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨@WebServlet(name = "frontControllerServletV2", urlPatterns = "/front-controller/v2/*")public class FrontControllerServletV2 extends HttpServlet { private Map controllerMap = new HashMap(); public FrontControllerServletV2() { controllerMap.put("/front-controlle..

Web/Spring 2025.02.09

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 03. 서블릿, JSP, MVC 패턴

1. 서블릿으로 회원 관리 웹 애플리케이션 만들기//회원 모델@Getter@Setterpublic class Member { private Long id; private String username; private int age; public Member() {} public Member(String username, int age) { this.username = username; this.age = age; }}//회원 저장소public class MemberRepository { private Map store = new HashMap(); private static long sequence = 0L; private stati..

Web/Spring 2025.02.07

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 02. 서블릿

1. 서블릿 세팅@ServletComponentScan //서블릿 자동 등록@SpringBootApplicationpublic class ServletApplication { public static void main(String[] args) { SpringApplication.run(ServletApplication.class, args); }}- 스프링 부트는 서블릿을 직접 등록해서 사용할 수 있도록 @ServletComponentScan을 지원한다.@WebServlet(name = "helloServlet", urlPatterns = "/hello")public class HelloServlet extends HttpServlet { @Override protected void ser..

Web/Spring 2025.02.06

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 01. 웹 애플리케이션 이해

1. 웹 서버, 웹 애플리케이션 서버웹 서버- 정적 리소스 제공, 기타 부가기능- 정적(파일) HTML, CSS, JS, 이미지, 영상- ex) NGINX, APACHE 웹 애플리케이션 서버 (WAS - Web Application Server)- 웹 서버 기능 포함- 프로그램 코드를 실행해서 애플리케이션 로직 수행- 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC...- ex) 톰캣(Tomcat) Jetty, Undertow 웹 시스템 구성- 정적 리소스는 웹 서버가 처리- 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임- WAS는 중요한 애플리케이션 로직 처리 전담- 정적 리소스가 많이 사용되면 Web 서버 증설, 애플리케이션 리소스가 많이 사..

Web/Spring 2025.02.05

[스프링 핵심 원리] 08. 빈 스코프

1. 빈 스코프란스코프는 스프링 컨테이너의 시작과 종료 사이에 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다.- 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다.- 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다.- 웹 관련 스코프 (5번에서 자세히) 2. 프로토타입 스코프싱글톤 스코프의 빈을 조회하면 스프링 컨테이너는 항상 같은 인스턴스의 스프링 빈을 반환한다.반면에 프로토타입 스코프를 스프링 컨테이너에 조회하면 스프링 컨테이너는 항상 새로운 인스턴스를 생성해서 반환한다.여기서 핵심은 스프링 컨테이너는 프로토타입 빈을 생성하고, 의존관계 ..

Web/Spring 2025.01.23

[스프링 핵심 원리] 07. 빈 생명주기 콜백

1. 빈 생명주기 콜백- 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다.- 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 또한 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다. 스프링 빈의 이벤트 라이프사이클: 스프링 컨테이너 생성 > 스프링 빈 생성 > 의존관계 주입 > 초기화 콜백 > 사용 > 소멸전 콜백 > 스프링 종료 public class NetworkClient { private String url; public NetworkClient() { ..

Web/Spring 2025.01.22