분류 전체보기

Servlet은 class 위에 @ServletComponentScan을 통해 Servlet을 자동 등록할 수 있다. Spring이 자동으로 내 Package 및 하위 패키지들로부터 Servlet을 다 찾아서 실행할 수 있도록 도와준다. @ServletComponentScan 우선 Java Class를 하나 생성하고, 클리스가 HttpServlet을 상속할 수 있도록 하고, @WebServlet 어노테이션을 추가한다. 이제 /hello로 오면 아래 코드가 실행된다. 매핑된 url이 호출되면 서블릿 컨테이너는 @WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { } [C..
Spring Initializer Jar 설정 성능 향상을 위한 빌드 설정 Lombok 사용을 위한 Enable Annotation Processing 체크
클라이언트가 브라우저로 HTTP Request 메시지를 보내면, HTTP Response 메시지가 반환된다. 세부적으로는 서블릿 객체를 호출하여 HttpServletRequest, HttpServletResponse 객체를 생성하고 이를 통해 Response 메시지를 생성하는 것이다. 그렇다면 서블릿 객체는 누가 호출할까? 바로 Thread이다. Thread란 어플리케이션 코드를 하나씩 순차적으로 실행하는 것이다. 예를 들어 main 메서드를 실행하면 main 스레드가 실행되는 것이다. 스레드는 한번에 하나의 코드 라인만 수행하기 때문에, 동시 처리가 필요하면 스레드를 추가로 생성해야 한다. 동시 처리를 위해서는 여러 가지 방법이 있다. # 방법1. 요청할 때마다 매번 스레드를 생성하는 방법 1. 장점 ..
WAS를 하나부터 열까지 개발하기 위해서는 핵심 비즈니스 로직 처리를 포함하여 수많은 기능을 구현해야 한다. 서블릿은 핵심 비즈니스 로직 처리를 제외한 데이터 내용을 읽어내는 것부터, HTTP 응답 메시지를 생성하기까지 모든 것을 담당한다. 예시 코드이다. 클라이언트에서 웹 브라우저로 URL로 요청(urlPatterns)이 오면 서블릿의 서비스 메서드가 실행된다. # HttpServletRequest HTTP 요청 정보를 편리하게 사용 # HttpServletResponse HTTP 응답 정보를 편리하게 제공 우선 HTTP 요청 메시지를 기반으로 HttpServletRequest, HttpServletResponse를 새로 생성한 후, 서블릿 컨테이너(helloServlet)를 호출한다. 개발자는 Htt..
효율적인 리소스 관리 및 서버 과부하 방지를 위한 웹 시스템 구성 정적 리소스(HTML, CSS, JS)는 웹 서버가 처리하고, 비즈니스 로직 호출 등 동적인 처리가 필요하면 WAS에 요청한다. WAS는 중요한 비즈니스 로직 처리를 담당한다. 또한, 정적 리소스만 제공하는 웹 서버는 잘 죽지 않기 때문에, 비교적 장애가 잘 발생하는 WAS가 장애가 발생할 경우 Web 서버가 오류 화면을 제공할 수 있다. 출처 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의 웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. ..
이전에는 MemoryRepository 인터페이스를 생성하고, implement 하여 구현체를 생성하여 DB 혹은 Persistence Context에 CRUD를 수행하였다. JPA를 사용하더라도 인터페이스인 JPA를 위한 구현체인 hibernate 라이브러리를 추가해줬어야 했다. 하지만 Spring에서는 굳이 구현체를 만들지 않고 인터페이스만으로 기본적인 CRUD 기능을 제공한다. 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성하여 주입한다. 하단의 코드와 같다. findByName 메서드만을 제외하고 따로 메서드를 생성하지 않았다. 어떻게 이게 가능할까? ... public interface SpringDataJpaMemberRepository extends Jpa..
JDBC Template에서는 직접 SQL Query문을 생성해야 하지만, JPA를 사용하면 이를 자동으로 만들어서 개발 생산성을 높여줄 뿐만 아니라 SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다. 사전 설정 # build.gradle 추가 Spring Boot가 자동으로 Entity Manager를 생성해준다. implementation 'org.springframework.boot:spring-boot-starter-data-jpa' # application.properties 추가 JPA를 사용하면 객체를 보고 알아서 테이블을 만들어버린다. 본 실습에서는 테이블을 만들어놨기 때문에 none으로 설정. spring.jpa.show-sql=true spring.jpa..
이전 테스트와 달리 본 포스팅에서는 Spring Container에서 Repository(Database)와 Service를 가져와서 테스트하도록 한다. 먼저 class에 @SpringBootTest, @Transactional 어노테이션을 생성한다. 그리고 새로 memberSer vice와 memberRepository를 생성하는 것이 아니라 @Autowired를 통해 Spring Container 가져오도록 한다. @SpringBootTest @Transactional public class MemberServiceIntegrationTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @..
홈 화면 추가하기 templates 패키지에 home.html을 생성한다. Spring이 실행하면 static 보다 우선적으로 templates 패키지를 확인한다. Hello Spring 회원 기능 회원 가입 회원 목록 회원 가입 기능 회원 가입 기능은 두 개의 MVC로 구현된다. 회원 가입 폼을 전송해줄 @GetMapping과 폼에 채운 내용을 바탕으로 회원을 저장할 @PostMapping이다. 먼저 GET 방식이다. MemberController에서 "/members/new" URL에 매핑되는 String인 members/createMemberForm으로 이동하도록 한다. @Controller public class MemberController { private final MemberService ..
의존 관계가 있다? 스프링 빈이 관리된다? 앞선 포스팅에서 MemberService를 회원 가입 및 조회 로직를 생성하고 MemberRepository에 이를 저장 및 조회하였다. 이제 화면을 그려야 하는데, 이를 위해서는 MemberController와 View Template이 필요하며, MemberController은 MemberService를 통해서 회원 가입을 하고 데이터를 조회할 수 있어야 한다. 이를 바로 "의존 관계가 있다"고 표현한다. 먼저 MemberController라는 java class를 생성하고, @Controller 어노테이션을 붙인다. package springTest.hellospring.controller; import org.springframework.stereotyp..
Younngjun
'분류 전체보기' 카테고리의 글 목록 (6 Page)