while(1) work();
반응형
3. Servlet으로 방명록 만들기

개요 Servlet을 이용해 방명록을 만들어 본다. 이후 템플릿 엔진을 이용해 코드를 개선하고 최종적으로 Spring MVC를 이용해 개선할 것이다. Comment Entity package com.lickthespring.web.entity; public class Comment { private final String name; private final String comment; public Comment(String name, String comment) { this.name = name; this.comment = comment; } public String getName() { return name; } public String getComment() { return comment; } } C..

article thumbnail
2. Servlet 만들어보기

개요 이제 HttpServlet을 상속받아 우리의 비즈니스 로직을 처리하는 Servlet을 만들고 WAS에게 처리하도록 하면 HTTP 애플리케이션이 완성된다. 프로젝트 생성 mvn archetype:generate 위 명령을 입력해 빈 프로젝트를 생성해주자. 4.0.0 com.lickthespring.web web 1.0-SNAPSHOT web war UTF-8 1.7 1.7 junit junit 4.11 test jakarta.servlet jakarta.servlet-api 6.0.0 provided maven-compiler-plugin 3.6.1 1.8 1.8 maven-war-plugin 3.3.2 src/main/webapp/WEB-INF/web.xml false 위와 같이 pom.xml을 수..

article thumbnail
1. Servlet과 WAS의 필요성

HTTP 서비스를 만드는 방법 HTTP 프로토콜 아래에서 동작하는 서비스를 어떻게 구현할 수 있을까? HTTP는 TCP 프로토콜을 사용해서 (주로) 80포트에서 위와 같은 평문을 주고받는 프로토콜이다. 클라이언트가 HTTP 프로토콜에 맞추어 Request를 보내면 서버도 HTTP 프로토콜 맞추어 Response를 보낸다. 따라서 아래와 같은 동작을 하는 프로그램을 만들면 HTTP 애플리케이션을 만들 수 있다. TCP 80포트에서 수신 대기 하는 소켓 생성 요청이 들어오면 HTTP 프로토콜에 맞는 형식인지 확인 HTTP Request 패킷을 분석해서 메서드(GET, POST, …), 요청 경로, 헤더 정보, 파라미터, 요청 본문 등을 파싱 메서드와 요청 경로에 맞는 함수를 호출 함수에서 비즈니스 로직 처리..

article thumbnail
16. Spring AOT(Ahead of Time)

Spring AOT란? Spring 6부터 Spring AOT(Ahead of Time; 사전 최적화) 기능이 도입되었다. 기존에는 Spring Native 프로젝트에서 실험해왔던 기능인데, 이제 Spring core에 포함되었다.

article thumbnail
15. Spring AOP(Aspect Oriented Programming)

AOP란? 관점 지향 프로그래밍은 메서드의 공통 로직(로깅 등)을 비즈니스 로직하고자 하는 프로그래밍 기법이다. 코드에 불필요한 중복을 줄이고 비즈니스 로직에만 집중할 수 있다. Spring에서는 AOP를 지원하기 위해 JDK 동적 프록시(java.lang.reflect.proxy)를 이용해 프록시 객체를 만든다. 그러나 원본 클래스가 인터페이스를 구현하지 않는 경우에는 예외적으로 CGLIB을 이용해 프록시를 만든다. (설정 파일이 CGLIB 프록시가 되는 것 처럼) AspectJ? AspectJ는 Java에서 AOP를 지원하기 위해 만들어진 오픈 소스 프로젝트이다. 자바 기반 문법을 사용하지만, 순수 자바와는 다소 차이가 있고, “.aj” 의 확장자를 가진다. package test; public as..

14. 스프링 표현언어(SpEL)

SpEL SpEL(Spring Expression Language)이란 런타임에서 객체에 대한 쿼리와 조작을 지원하는 강력한 표현 언어이다. The Spring Expression Language (SpEL) is a powerful expression language that supports querying and manipulating an object graph at runtime. 사용 예시 public void run() { ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("'Hello World'.concat('!')"); String message = (String) exp..

article thumbnail
13. Null Safety

Null Safety Java는 기본적으로 null-safety를 표현할 수 없음. (안전을 위해 Optional을 사용 권장) Spring의 null-safety 어노테이션을 사용해 해당 매개변수, 반환 값, 필드가 null이 될 수 없음을 명시할 수 있음. (강제할 수는 없음.) @Nullable - 특정 매개변수, 반환 값, 필드가 null이 될 수 있음을 명시 @NonNull - 특정 매개변수, 반환 값, 필드가 null이 될 수 없음을 명시 @NonNullApi - null이 아닌 것을 매개변수, 반환 값의 기본 체계로 선언(패키지 수준) @NonNullFields - null이 아닌 것을 필드의 기본 체계로 선언(패키지 수준) public void print(@NonNull String mes..

12. Resource 인터페이스

Spring의 Resource 인터페이스 Java의 표준 java.net.URL의 클래스는 기능이 부족하다. classpath로부터 파일을 읽어올 수 없음 ServletContext로 부터의 상대경로로 파일을 읽어올 수 없음 특수 접두사에 대해 핸들러 등록이 복잡함 Spring은 Resource 인터페이스(org.springframework.core.io.Resource)를 만들어 여러 resource들을 추상화했다. Resource 인터페이스는 아래와 같다. public interface Resource extends InputStreamSource { boolean exists(); default boolean isReadable() { return exists(); } default boolean ..

반응형

검색 태그